Heim >Backend-Entwicklung >PHP-Tutorial >mysql里join多个表的疑问。

mysql里join多个表的疑问。

WBOY
WBOYOriginal
2016-07-06 13:53:171154Durchsuche

我要通过用户名username,查询user表得到此用户ID,通过用户ID查comment表得到此用户全部评论,通过评论中的tid字段查询topic表,获得该评论所在的帖子,通过帖子的uid获得此帖子的作者。

问题来了,我是从user表开始查的,中间分别join了comment表和topic表,那我通过帖子uid查帖子作者时,又需要从user表查一次username,这次的username指的是发表该帖子的作者用户名,不是一开始传入的username。

mysql一直提示我Column 'username' in where clause is ambiguous

为什么呢…

回复内容:

我要通过用户名username,查询user表得到此用户ID,通过用户ID查comment表得到此用户全部评论,通过评论中的tid字段查询topic表,获得该评论所在的帖子,通过帖子的uid获得此帖子的作者。

问题来了,我是从user表开始查的,中间分别join了comment表和topic表,那我通过帖子uid查帖子作者时,又需要从user表查一次username,这次的username指的是发表该帖子的作者用户名,不是一开始传入的username。

mysql一直提示我Column 'username' in where clause is ambiguous

为什么呢…

连表的是时候查询字段要写清楚属于哪一个表的字段,例如
SELECT(a.username,a.id,b.,c.) FROM user AS a
LEFTJOIN comment AS b ON a.id = b.uid
LEFTJOIN topic AS c ON b.tid = c.id

可以贴出sql么,因为你查询了两次user表,如果是一条sql的话,你要分别为这两次的user表定义个别名,不然在where中直接使用username就会报Column 'username' in where clause is ambiguous错误.请在where条件中使用 别名.username的方式

<code>给select 的表 as 一个名称
类似:select * from tmp as t1 left join tmp as t2 on t1.uid=t2.uid</code>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn