多表查询MySQL Query

4
Table: UserInfoTbl
=======================
| username  | type    |
=======================
| user0001  | premium |
| user0002  | premium |
| user0003  | normal  |
| user0004  | premium |
=======================

Table: UserPvTbl
========================
| username | fUsername |
========================
| user0003 | user0002  |
| user0002 | user0001  |
| user0003 | user0001  |
========================

如何选择UserInfoTbl中所有fUsername为UserPvTbl的username为user0003的用户信息?

编辑:意思是我需要从UserInfoTbl检索user0002和user0001的信息。

编辑2:两个表之间的关系:UserInfoTbl.username = UserPvTbl.username

3个回答

8

DroidMatt,请问这两个表之间的关系是什么?

UserInfoTbl.username = UserPvTbl.fusername
或者
UserInfoTbl.username = UserPvTbl.username

如果Vikram假设第一个,那他是正确的。否则你需要这个。

SELECT *
FROM UserInfoTbl, UserPvTbl
WHERE UserPvTbl.username = UserInfoTbl.username
AND UserPvTbl.username = 'user0003'

UserInfoTbl.username = UserPvTbl.username 是正确的。抱歉我忘记澄清关系了。 - DroidMatt
注意:Vikram 刚刚重命名/缩短了表名。 UserInfoTbl = U,UserPvTbl = UP。 - jammin

1

使用方法:

select * from UserInfoTbl inner join UserPvTbl on UserInfoTbl.username=UserPvTbl.fusename
where UserPvTbl.usename='user0003'

0
select U.*
from UserInfoTbl U
inner join UserPvTbl UP
on U.username  = UP.fusername  
where UP.username = 'user0003'

你好,Vikram。 你介意解释一下U.*、UP和'from UserInfoTbl U'吗?我有点迷失了。 - DroidMatt
U是“UserInfoTbl”的简称,UP是“UserPvTbl”的简称,而U.*将返回“UserInfoTbl”的所有列。 - Vikram

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接