gpt4 book ai didi

mysql - SQL:如何从多行中选择满足多个条件的单个id

转载 作者:行者123 更新时间:2023-11-29 01:42:10 26 4
gpt4 key购买 nike

在 MySQL 数据库上,我有下表

package_content :

id | package_id | content_number | content_name | content_quality

1 99 11 Yellow 1
2 99 22 Red 5
3 101 11 Yellow 5
4 101 33 Green 5
5 101 44 Black 5
6 120 11 Yellow 5
7 120 55 White 5
8 135 66 Pink 5
9 135 99 Orange 5
10 135 11 Yellow 5

我正在寻找对其进行搜索查询的可能性:

我想选择 package_id,其中 content_number 可以是 11 AND 22(在这种情况下,它应该只选择 package_id 99

我真的不知道在 SQL 中是否可行,因为语句 AND 的结果始终为 false。如果我使用语句 OR 我也会得到 package_id 99, 101, 120, 135 而这不是我想要的。

也许我的 table 也设计得不好,但任何建议都会有所帮助!提前致谢

编辑

我添加了content_quality

我用了juergen的sql查询,效果很好

select package_id
from package_content
where content_number in (11,22)
group by package_id
having count(distinct content_number) = 2

我的最后一个问题是我现在如何添加另一个条件:选择 package_id 其中 content_number11 22 content_number 11content_quality 1

编辑 2:

对于第二个问题,我现在使用这个查询。感谢两位帮助过我的人! :)

SELECT *
FROM (
SELECT package_id
FROM package_content
WHERE
(content_number=11 AND content_quality > 1)
OR (content_number = 33 AND content_quality = 5)
OR (content_number = 44 AND content_quality =5 AND content_name like 'Black')
GROUP BY package_id
HAVING count( DISTINCT content_number) = 3
)t1
LEFT JOIN package_content ON package_content.package_id = t1.package_id

这将输出

id | package_id | content_number | content_name | content_quality

3 101 11 Yellow 5
4 101 33 Green 5
5 101 44 Black 5

最佳答案

您需要按package_id 分组,然后使用having 对分组数据执行聚合函数

select package_id
from package_content
where content_number = 22
or
(
content_number = 11 and content_quality = 1
)
group by package_id
having count(distinct content_number) = 2

关于mysql - SQL:如何从多行中选择满足多个条件的单个id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17974669/

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