MySQL 三表连接

标签 mysql sql select join

我有三个表

表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 加入 Table1Table2

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/

相关文章:

MYSQL like 查询删除表中的所有行

c# - 端口更改时无法连接到 mysql 服务器 C#

c# - 如果在 C# 中的 Using 语句中调用连接关闭事件会发生什么

javascript - 如何动态设置 Angularjs select 的值?

php - MySQL 获取最受欢迎的标签 ID 组合及其计数

javascript - ng-options 中的键值对

php - 有没有办法在 php 和 mysql 中实现树 ADT?

sql - 从没有连接条件的两个表中选择数据,t-sql

mysql - 计算每个单元格与下一个单元格的日期差异

php - 在 ubuntu 16.04 上安装 mysql 服务器时出现问题