我认为我有一个非常简单的查询要执行,但我似乎无法使它工作。
我的这个表有2列:
version_id trim_id
1 15
1 25
1 28
1 30
1 35
2 12
2 25
2 33
2 48
3 11
3 25
3 30
3 32
我正在尝试获取任何版本ID,其中包含了trim_id的子集。假设所有version_id都有trim_id的25和30.我的明显尝试是:
SELECT * FROM table WHERE trim_id=25 AND trim_id=30
我原本期望将version_id 1和3作为结果,但我什么都没得到。
我正在使用最新版本的MAMP,它有一些奇怪的行为,就像在这种情况下它只是告诉我它'加载'并且从不给我一个错误信息或其他东西。但通常情况下,没有数据可以返回。
这是InnoDB,如果有帮助的话。
感谢您的意见。
答案 0 :(得分:1)
您的查询无效,因为您使用的是AND
而trim_id
不能同时拥有两个不同的值,因此您需要应用Relational Division来获取结果。< / p>
您需要使用类似于以下内容的内容:
SELECT version_id
FROM yourtable
WHERE trim_id in (25, 30)
group by version_id
having count(distinct trim_id) = 2
这将返回同时包含version_id
和25
的{{1}}值。然后,如果要在最终结果中包含其他列,可以将查询扩展为:
30
答案 1 :(得分:0)
SELECT *
FROM table
WHERE trim_id IN(25,30)