gpt4 book ai didi

mysql - 在左连接中按多个值进行选择

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

使用以下结构,如何选择符合此 1:n 关系中多个条件的请求子集?

# Table 1: Request
uid
name

# Table 2: Additional Information
uid
type
value
request

表 2 的注释:type 可以是任何内容,即“product_name”或“rating”。

如果我只想选择给定product_name的请求,我可以这样做:

SELECT * FROM request as r 
LEFT JOIN additional_information as i
ON r.uid = i.request
WHERE i.type = 'product' AND i.value = 'Product Name'

如果我想按给定的 product_name rating 选择请求,我就会陷入困境,我的语句必须是什么样子。我尝试简单地添加另一个连接,但这给了我与给定 product_name 相关的所有请求以及与给定评级相关的所有请求。我需要声明来尊重这两个条件。

正如前面提到的,这对我不起作用。

SELECT * FROM request as r 
LEFT JOIN additional_information as i
ON r.uid = i.request
LEFT JOIN additional_information as a
ON r.uid = a.request
WHERE i.type = 'product' AND i.value = 'Product Name'
OR a.type = 'rating' AND a.value = 1

感谢您的帮助!

最佳答案

将这些条件从 WHERE 移动到 JOIN ON 条件,例如

SELECT * FROM request as r 
LEFT JOIN additional_information as i
ON r.uid = i.request
AND i.type = 'product' AND i.value = 'Product Name'
LEFT JOIN additional_information as a
ON r.uid = a.request
AND a.type = 'rating' AND a.value = 1;

是的,绝对是的,考虑到 Strwabery 的宝贵评论(错过了),您可能实际上想要指定您想要获取的列名比 * 性能更好,因为您不会使用投影获取不必要的数据;除非你真的想获取所有内容。

关于mysql - 在左连接中按多个值进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41100105/

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