SQL查询WHERE子句具有多行条目

时间:2013-09-24 20:50:37

标签: mysql sql

我的表看起来像这样

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?

1 个答案:

答案 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