gpt4 book ai didi

mysql - SQL JOIN 多对多

转载 作者:IT老高 更新时间:2023-10-28 23:49:05 25 4
gpt4 key购买 nike

抱歉这个极简的标题,但我不知道如何简短地描述它。我有三个表:

组表

ID | Genre
-----------------
1 | Action
2 | Adventure
3 | Drama

多对多表

GroupID | ElementID
-----------------
3 | 1
1 | 2
2 | 2
2 | 3
3 | 3

和元素表

ID | Element
-----------------
1 | Pride and Prejudice
2 | Alice in Wonderland
3 | Curious Incident Of A Dog In The Night Time

一切都很好,也很简单。我要实现的选择如下

ID | Element                                         |  Genre
-------------------------------------------------------------
1 | Pride and Prejudice | Drama
2 | Alice in Wonderland | NULL
3 | Curious Incident Of A Dog In The Night Time | Drama

我想从元素表中选择所有元素,并将流派字段设置为戏剧null

我正在尝试在 MySQL 中执行此操作。

提前致谢

最佳答案

这个小技巧是可能的(多对多表上的外部连接,约束条件是 GroupID 必须为 3(用于戏剧)

http://sqlfiddle.com/#!9/01cf3/1

SELECT elements.ID, elements.Element, groups.Genre
FROM elements
LEFT OUTER JOIN group_elements
ON elements.ID = group_elements.ElementID
AND group_elements.GroupID = 3
LEFT OUTER JOIN groups
ON group_elements.GroupID = groups.ID

LEFT OUTER JOIN 意思是:从前面的表格中取出所有行(如果你愿意的话,那些在 LEFT OUTER JOIN 左侧的行),即使下表中没有与它们对应的行。条件 ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3 表示如果我们找到任何与我们的 ElementID 匹配的东西,它也一定是戏剧(GroupID = 3)。然后,我们在 groups 表上执行另一个 LEFT OUTER JOIN,这使我们能够显示 Genre 列,如果元素不是戏剧,则为 NULL。

关于mysql - SQL JOIN 多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17774373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com