我的表看起来像这样
DocumentID AttributeID LongValue StringValue BooleanValue
100 1 null null 1
100 2 123 null null
100 3 null test null
每个attributeID都是一个类型,只填充该列,其他所有内容都为null。文档可以有多个属性。
我的查询要求我找到文件
Attribute ID 1 has value 1
Attribute ID 2 has value 123
Attribute ID 3 has value test
我正在写这样的查询
select documentID
from table
where (
(AttributeID=1 AND BooleanValue=1) AND
(AttributeID=2 AND LongValue=123) AND
(AttributeID=3 AND StringValue="test"))
显然,上面的查询给出了零结果,尽管文档100满足了我的约束。 如何更改查询以获取文档ID 100?
答案 0 :(得分:4)
SELECT DocumentID
FROM tablename
WHERE (AttributeID = 1 AND booleanValue = 1) OR
(AttributeID = 2 AND longValue = 123) OR
(AttributeID = 3 AND stringValue = 'test')
GROUP BY DocumentID
HAVING COUNT(*) = 3