在 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
我正在寻找对其进行搜索查询的可能性:
我想选择可能是ANDpackage_id
的位置(在这种情况下,它应该只选择content_number
11
22
package_id 99
我真的不知道在 SQL 中是否可能,因为该语句AND
总是会导致错误。如果我使用该语句,OR
我也会得到package_id 99, 101, 120, 135
,这不是我想要的。
也许我的桌子也设计得不好,但任何建议都会有所帮助!提前致谢
编辑
我添加了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
where content_number
is 11
and has22
content_number 11
content_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