gpt4 book ai didi

mysql - 选择每个字段都包含多个值的语句

转载 作者:行者123 更新时间:2023-11-30 23:05:52 25 4
gpt4 key购买 nike

所以我有三个表:

供应商样式供应商样式

供应商可以有多种样式。因此,对于给定的供应商 ID,vendor_styles 中可以有多个行。

我想要做的是给定一个供应商,我想找到所有与样式完全没有重叠的供应商。因此,如果我的供应商是一名摄影师和一名摄像师,我想找到所有既不是摄影师也不是摄像师的供应商。现在发生的情况是,在这种情况下,如果供应商是供应商,摄影师和 dj,它将被退回,因为它具有与第一个供应商比较时不存在的风格。但我想确保如果任何样式相同,则不会返回。

我运行的选择语句是:

select * 
from vendors, vendor_styles
where vendors.id = vendor_styles.vendor_id
and vendor_styles.style_id not in
(select style_id from vendor_styles where vendor_id = <vendor_id>);

问题在于它基本上可以归结为

(23,25) not in (22, 23, 25)

因为 22 不在前者中,所以条件为真。我想要得到的是,如果第一组值中的任何值在第二组值中,则条件为假。

最佳答案

这个查询应该返回正确的结果:

SELECT v.*
FROM
vendors v
WHERE
NOT EXISTS (
SELECT *
FROM vendor_styles vs1 INNER JOIN vendor_styles vs2
ON vs1.style_id = vs2.style_id
AND vs1.vendor_id = 1 --- insert vendor id here
WHERE
vs2.vendor_id = v.id)

请参阅 fiddle here .

关于mysql - 选择每个字段都包含多个值的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21917834/

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