【发布时间】:2013-08-01 05:33:40
【问题描述】:
在 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 总是会导致错误。如果我使用声明 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 其中content_number 是11 和 22 和 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
【问题讨论】:
标签: mysql sql search select criteria