gpt4 book ai didi

MySQL 查询选择只选择一个类别的用户

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

我有一个包含类似下面数据的表格

id  UserId  Category
1 5001 A
2 5001 B
3 5002 A
4 5003 B
5 5004 A
6 5001 A

1) 我们如何查询可以获取仅注册了 A 类别的用户的表。用户不应注册 B 或任何其他类别。对于上面的数据,它应该只返回我

3    5002       A

2) 我们如何编写一个查询来获取同时注册了 A 和 B 类别的用户。不孤单 A 不孤单 B对于以上,它应该只返回我

userId - 5001

有人可以帮忙吗?

最佳答案

您可以使用以下解决方案,使用 IN:

SELECT DISTINCT UserID, Category
FROM table_name t
WHERE Category = 'A' AND UserID NOT IN (
SELECT UserID
FROM table_name
WHERE Category <> t.Category
);

另一种使用 EXISTS 的解决方案:

SELECT DISTINCT UserID, Category
FROM table_name t
WHERE Category = 'A' AND NOT EXISTS (
SELECT 1
FROM table_name
WHERE UserID = t.UserID AND Category <> t.Category
);

要获得第二个结果,您可以通过 INNER JOIN 使用以下解决方案:

SELECT DISTINCT t.UserId
FROM table_name t INNER JOIN (
SELECT UserId
FROM table_name
WHERE Category = 'B'
) b ON t.UserId = b.UserId
WHERE t.Category = 'A'

另一种使用 EXISTS 的解决方案:

SELECT DISTINCT UserID
FROM table_name t
WHERE Category = 'A' AND EXISTS (
SELECT 1
FROM table_name
WHERE UserID = t.UserID AND Category = 'B'
);

demo on dbfiddle.uk

关于MySQL 查询选择只选择一个类别的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55277430/

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