首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SELECT JOIN with conditional (OR) cross

SELECT JOIN with conditional (OR) cross
EN

Stack Overflow用户
提问于 2019-02-15 02:27:46
回答 1查看 31关注 0票数 1

我需要做这样的事情(在MySQL中),我使用UNION的尝试直到现在才会起作用。

理论上:

代码语言:javascript
复制
SELECT * FROM
tableA A

JOIN tableB B ON A.tableAId = B.tableAId

LEFT JOIN tableC C ON C.tableAId = A.tableAId

LEFT JOIN tableD D ON D.tableAId = A.tableAId

JOIN tableE E
ON (C.tableEId = E.tableEId OR D.tableEId = E.tableEId)

预期的结果是A与B交叉,可选的C与A交叉,可选的D与A交叉,如果其id在C或D上,则得到E的结果。

为了知道找到的记录是来自C还是D,我使用了一个if检查tableCId或tableDId是否为null。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-15 02:33:46

我认为你的代码会工作的。

代码语言:javascript
复制
SELECT *
FROM tableA A JOIN
     tableB B
     ON A.tableAId = B.tableAId LEFT JOIN
     tableC C
     ON C.tableAId = A.tableAId LEFT JOIN 
     tableD D
     ON D.tableAId = A.tableAId JOIN
     tableE E
     ON E.tableEId IN (C.tableEId, D.tableEId);

这将过滤掉在C和D中没有匹配的行,以及那些在C/D中匹配不在E中的行。我假设这是所需的。

此外,ORIN可能会对JOIN性能产生不良影响,但是您没有提到性能问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54696880

复制
相关文章

相似问题

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