gpt4 book ai didi

Mysql SELECT 当搜索词有多个值时

转载 作者:太空宇宙 更新时间:2023-11-03 11:22:15 25 4
gpt4 key购买 nike

我正在尝试从下表(摘录)中选择所有 user_id,其中 product_id“3”与 user_id 根本没有关联。

user_id product_id  status  terms_id
100 3 1 10
100 22 0 0
100 402 0 20
101 22 1 10
101 68 1 0
101 120 1 20
201 22 0 0
201 3 1 10

在这个例子中,应该只选择 user_id 101,因为它根本没有 product_id 3。每个 user_id 可以有多个条目。

我试过以下方法,但它错误地选择了所有 user_id 的

SELECT distinct user_id FROM table WHERE product_id <> 3

我怎样才能做到这一点?实际表有超过 350 万行。谢谢!

最佳答案

您可以使用 NOT EXISTS 子查询来检查用户是否没有与 product_id = 3 关联的行:

SELECT DISTINCT user_id
FROM `table` t1
WHERE NOT EXISTS (SELECT * FROM `table` t2 WHERE t2.user_id = t1.user_id AND t2.product_id = 3)

输出

101

Demo on dbfiddle

另一种解决方案是 GROUP BY user_id 并断言 product_id = 3 的行数为 0:

SELECT user_id
FROM `table`
GROUP BY user_id
HAVING SUM(product_id = 3) = 0

Demo on dbfiddle

关于Mysql SELECT 当搜索词有多个值时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58678075/

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