我有三个表
表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
在上面的输出中,表 1 列的第 1 行元素为真,因为移动设备“123456789”在表 1 上可用
我正在使用 MySQL。
最佳答案
您可以使用一系列左连接来实现您想要的。您的查询的棘手部分是知道使用手机号码而不是用户 ID 加入 Table1
和 Table2
。
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
点击下面的链接获取正在运行的演示:
SQLFiddle
关于MySQL 三表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37071402/