我有三张桌子
表1
userid mobile
1 123456789
2 321654987
3 987456321
表2
revid userid revdes mobile
1 2 ASD 123456789
2 2 DSA 123456348
3 1 QWE 963258124
表3
revid revloc
1 asdf
3 dsaq
我希望输出像userid = 2
这样的输出userid revid revdes mobile revloc inTable1
2 1 ASD 123456789 asdf true
2 2 DSA 123456348 NULL false
在上面的输出inTable1列中,第1行元素为true,因为移动" 123456789"可在表1中找到
我正在使用MySQL。
答案 0 :(得分:0)
您可以使用一系列左连接来实现您想要的效果。您查询的棘手部分是知道使用移动电话号码加入Table1
和Table2
,而不是用户ID。
SELECT t2.userid, t2.revid, t2.revdes, t2.mobile, t3.revloc,
t1.mobile IS NOT NULL AS inTable1
FROM Table2 t2 LEFT JOIN Table1 t1
ON t2.mobile = t1.mobile
LEFT JOIN Table3 t3
ON t2.revid = t3.revid
WHERE t2.userid = 2
请按照以下链接查看正在运行的演示:
答案 1 :(得分:0)
您可以使用left join
并检查结果列是否为null
:
SELECT t2.userid, t2.revid, t2.revdes, t2.mobile, t3.revloc,
t1.mobile IS NOT NULL AS inTable1
FROM table2 t2
JOIN table3 t3 ON t2.revid = t3.revid
LEFT JOIN table1 t1 ON t2.mobile = t1.mobile
答案 2 :(得分:0)
这是一个希望它有帮助的查询:
SELECT Table1.userid, Table2.revid, Table2.revdes, Table2.mobile, Table3.revloc, IF(Table1.mobile = Table2.mobile, true, false) as inTable1
FROM Table1
JOIN Table2 ON Table2.userid = Table1.userid
JOIN Table3 ON Table2.revid = Table3.revid
答案 3 :(得分:0)
SELECT t2.userid, t2.revid, t2.revdes, t2.mobile, t3.revloc,
CASE WHEN (SELECT t4.mobile from Table1 t4 where t4.userid = T2.userid) = T2.mobile
THEN true ELSE false END AS inTable1
FROM Table1 t1, Table2 t2, Table3 t3
WHERE (t2.userid = t1.userid) AND (t2.revid = t3.revid)