我有4个表 tbl_user
,tbl_usedetails
,tbl_aboutme
,tbl_looking
包含不同用户的详细信息。这四个表共有一个名为 userid 的字段。我想用 userid 加入这四个表。
将我的用户ID视为3
tbl_user
是始终存在userid
的根表。 但在其他表中,userid
可能存在也可能不存在。
我尝试了以下查询但是获取了userdetails
userid
不等于3
select *
from `tbl_user` as u,
`tbl_usedetails` as ud,
`tbl_aboutme` as a,
`tbl_looking` as l
where (u.`userid`=ud.`userid` OR a.`userid`=l.`userid` )
AND (u.`userid`='3')
tbl_usedetails
没有 userid 3的行,但它包含另一行 userid 13,执行查询时也可以使用用户ID 13加入行。
答案 0 :(得分:3)
问题不是100%清晰明确,但我认为你想从其他表中获取值。如果三个表中的用户不存在行,则仍需要其他表的结果。这是LEFT JOIN
,如下所示:
SELECT *
FROM `tbl_user` AS u
LEFT JOIN `tbl_usedetails` AS ud ON u.userd = ud.userid
LEFT JOIN `tbl_aboutme` AS a ON u.userd = a.userid
LEFT JOIN `tbl_looking ` AS l ON u.userd = l.userid
WHERE u.`userid` = '3'
答案 1 :(得分:1)
尝试外连接,以便即使辅助表中没有数据也可以获取数据。
select *
from `tbl_user` as u,
left outer join tbl_usedetails ud on u.userid=ud.userid
left outer join tbl_aboutme a on a.userid=u.userid
left outer join tbl_looking l on l.userid=u.userid
where
u.userid='3'
答案 2 :(得分:-1)
select * from `tbl_user` as u,`tbl_usedetails`
as ud,`tbl_aboutme` as a,`tbl_looking` as l where
(u.`userid`=ud.`userid` OR a.`userid`=l.`userid` )
AND (u.`userid`='3')
将条件添加到ud table