表A:uid(用户ID) username(用户名)
表B:uid(用户ID) nickname(昵称)
表C:username(用户名) touser (用户名) SELECT * FROM C ORDER BY id DESC ;
这个是可以查询出C表中的username和touser两个字段。都是用户名。
我想把用户名变成昵称,结合表A和表B怎么写这个联合查询 ?思路是:通过表C的username结合表A找到uid,然后结合表B查询出nickname 。
难点就是表C中有两个用户名,不知道怎么写 。
表B:uid(用户ID) nickname(昵称)
表C:username(用户名) touser (用户名) SELECT * FROM C ORDER BY id DESC ;
这个是可以查询出C表中的username和touser两个字段。都是用户名。
我想把用户名变成昵称,结合表A和表B怎么写这个联合查询 ?思路是:通过表C的username结合表A找到uid,然后结合表B查询出nickname 。
难点就是表C中有两个用户名,不知道怎么写 。
from (c inner join a on c.username=a.username)
inner join b on a.uid=b.uid
-- or select b.nickname,c.touser
from c,a,b
where c.username=a.username and a.uid=b.uid
我要把这两个用户名转换成对应的昵称 。。
from c,a,b
where c.username=a.username and a.uid=b.uid--------为什么要select b.nickname,c.touser
select b.nickname不行吗?
你的c表没有id,怎么可以执行到这个SELECT * FROM C ORDER BY id DESC;?
什么难点是两个用户名?既然本来的属性名不同,就算它们代表的意义一样,数据库都不会识别不了啊?
from c,a,b
where c.username=a.username and a.uid=b.uid --------为什么要select b.nickname,c.touser
select b.nickname不行吗?-----------------你只select出nickname有什么意义呢?干脆直接select nickname from b就行了。