首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL三表连接

MySQL三表连接
EN

Stack Overflow用户
提问于 2016-05-06 11:36:21
回答 4查看 102关注 0票数 4

我有三张桌子

Table1

代码语言:javascript
复制
userid  mobile
1       123456789
2       321654987
3       987456321

Table2

代码语言:javascript
复制
revid   userid  revdes  mobile
1       2       ASD     123456789
2       2       DSA     123456348
3       1       QWE     963258124

Table3

代码语言:javascript
复制
revid   revloc
1       asdf
3       dsaq

我希望输出像这样的userid=2

代码语言:javascript
复制
userid  revid    revdes     mobile      revloc  inTable1
2       1        ASD        123456789   asdf    true
2       2        DSA        123456348   NULL    false

上述输出列第1行元素中的inTable1为真,因为移动"123456789“可在Table1上使用。

我正在使用MySQL。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-05-06 11:41:09

您可以使用一系列左联接来实现您想要的结果。查询的棘手之处在于知道如何使用移动号码而不是用户id加入Table1Table2

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2016-05-06 11:42:13

您可以使用left join,只需检查结果列是否为null

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2016-05-06 11:43:31

下面是一个希望能有所帮助的查询:

代码语言:javascript
复制
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 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37071402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档