2

我的桌子看起来像这样

DocumentID AttributeID LongValue StringValue BooleanValue
100                 1                 null                null                 1
100                 2                 123                 null                 null
100                 3                 null                test                 null

每个attributeID 都是一种类型,只有该列被填充,其他所有内容为空。一个文档可以有多个属性。

我的查询要求我在哪里找到文档

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 作为结果?

4

1 回答 1

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
于 2013-09-24T20:54:00.203 回答