gpt4 book ai didi

mysql - 如果同一 user_id 存在值,则选择记录

转载 作者:行者123 更新时间:2023-11-29 04:48:15 24 4
gpt4 key购买 nike

我需要从 mysql 数据库中获取记录;在此表中有一个与用户关联的操作列表。我需要让所有具有 column action = 3 和 column action = 5 的用户;例如,如果用户 nr。 4 有一个 action = 3 的记录,另一个 action = 5 我明白了;如果用户只有一个 action = 3 或 action = 5 的记录,我不能得到它。如果我写这个查询

SELECT * 
FROM user_action
WHERE action = 3 AND action = 5

我总是得到 0 条记录。如果我写 OR 而不是 AND 我得到所有具有 action = 3 或 action = 5 的记录,即使用户没有这两个值。我该怎么做?

最佳答案

这个问题有点叫Relational Division

SELECT  userID
FROM user_action
WHERE action IN (3,5)
GROUP BY userID
HAVING COUNT(DISTINCT action) = 2

如果action对于每个userID都是唯一的,你可以直接COUNT()记录而不用DISTINCT

SELECT  userID
FROM user_action
WHERE action IN (3,5)
GROUP BY userID
HAVING COUNT(*) = 2

最后,如果你想获取用户的全部详细信息,你需要将其与自身连接起来,

SELECT  a.*
FROM user_action a
INNER JOIN
(
SELECT userID
FROM user_action
WHERE action IN (3,5)
GROUP BY userID
HAVING COUNT(*) = 2
) b ON a.userID = b.userID

关于mysql - 如果同一 user_id 存在值,则选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15340064/

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