gpt4 book ai didi

mysql - 加入具有不同行数的 2 个表

转载 作者:行者123 更新时间:2023-11-29 04:27:57 25 4
gpt4 key购买 nike

我在连接 2 个行数不同的表时遇到问题。我尝试了 LEFT JOIN,但它不起作用,我想这是因为 ID_advertentie

查询:

SELECT * FROM table1
LEFT JOIN table2 ON table1.ID_kenmerk = table2.ID_kenmerk
WHERE table1.categorie = 1 AND table2.ID_advertentie = 17

如何编写一个查询,结果如表示例下方所示?

Table 1
ID_kenmerk Categorie Naam_kenmerk Plaatje_kenmerk Data_type
1 - 1 - Kenmerk a - plaatje1.gif - INT
2 - 1 - Kenmerk b - plaatje2.gif - BOOL
3 - 1 - Kenmerk c - Plaatje3.jpg - INT
4 - 1 - Kenmerk d - plaatje4.jpg - VARCHAR
5 - 2 - Kenmerk F - plaatje1.gif - INT
6 - 2 - Kenmerk G - plaartje2.gif - VARCHAR

Table 2
ID_kenmerk_data ID_kenmerk ID_advertentie value
1 - 1 - 17 - Test1
2 - 2 - 17 - Test2
3 - 3 - 17 - Test3
4 - 1 - 23 - lala1
5 - 2 - 23 - lala2
6 - 3 - 23 - ajdk2

结果查询(WHERE ID_advertentie = 17!)

ID_kenmerk    Naam_kenmerk     value
1 - Kenmerk a - Test1
2 - Kenmerk b - Test2
3 - Kenmerk c - Test3
4 - Kenmerk d - NULL

最佳答案

SELECT *
FROM table1
LEFT JOIN table2 ON table1.ID_kenmerk = table2.ID_kenmerk AND table2.ID_advertentie = 17
WHERE table1.categorie = 1

您在 WHERE 子句中使用的几乎所有内容也可以在 ON 子句中使用。但是将 table2.ID_advertentie = 17WHERE 移动到 ON 子句将在右侧添加一个 NULLed 行,如果没有的话匹配而不是消除它。

(编辑)替代方法:

SELECT *
FROM table1
LEFT JOIN table2 ON table1.ID_kenmerk = table2.ID_kenmerk
WHERE table1.categorie = 1 AND (table2.ID_kenmerk_data IS NULL OR table2.ID_advertentie = 17)

关于mysql - 加入具有不同行数的 2 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7657243/

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