gpt4 book ai didi

mysql - 如何 LEFT JOIN table1 ON table2 WHERE table2 行满足某些条件

转载 作者:行者123 更新时间:2023-11-29 12:06:50 25 4
gpt4 key购买 nike

请考虑此查询:

SELECT table1.* ,
(SELECT quantity FROM table2 WHERE id = table1.id AND table2.location = 10) quantity,
(SELECT reorder_level FROM table2 WHERE id = table1.id AND table2.location = 10) reorder_level,
(SELECT stock_date FROM table2 WHERE id = table1.id AND table2.location = 10) stock_date
FROM table1
WHERE category_id = 5 ORDER BY table1.id;

别名quantitylocationstock_date显然引用了table2中满足条件的一行: id=table1.idlocation=10

此查询有效,但由于笨拙的子查询,可能不是最理想的。

如何最好地将 table1 使用 USING(id) 连接到 table2 但仅限于 location 也是 10 的行。

提示:table1 中的一行在 table2 中包含多行。

不幸的是,实际的表定义要复杂得多,我认为将整个内容转储到该线程上可能会适得其反。

最佳答案

您可以在 ON() 部分使用附加条件,这样它将仅连接满足所提供条件的行

SELECT t1.* ,
t2.quantity ,
t2.reorder_level,
t2.stock_date
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.id AND t2.location = 10
WHERE t1.category_id = 5
ORDER BY t1.id;

另一种方法是对 table2 使用子选择并仅选择位置等于 10 的行

SELECT t1.* ,
t2.quantity ,
t2.reorder_level,
t2.stock_date
FROM table1 t1
LEFT JOIN
(SELECT * FROM table2 WHERE t2.location = 10) t2
ON t1.id = t2.id
WHERE t1.category_id = 5
ORDER BY t1.id;

关于mysql - 如何 LEFT JOIN table1 ON table2 WHERE table2 行满足某些条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31347671/

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