Sql 如何编写提供所有三个条件的select查询?
我只想选择三个条件Sql 如何编写提供所有三个条件的select查询?,sql,sql-server,Sql,Sql Server,我只想选择三个条件 ID ATTRID VALSTR 1771373 1 1234 1771373 3 510 1771373 7 2016 1771373 8 05 1777623 3 5003 1777623 7 2016 1777623 8 05 17781
ID ATTRID VALSTR
1771373 1 1234
1771373 3 510
1771373 7 2016
1771373 8 05
1777623 3 5003
1777623 7 2016
1777623 8 05
1778103 3 520
1778103 7 2016
1778103 8 06
我的查询是这样的,但查询返回所有ID
AttrId = 3 AND ValStr = 510
AttrId = 7 AND ValStr = 2016
AttrId = 8 AND ValStr = 05
我想显示所有三个条件都提供的结果。以我为例,;我应该显示1771373身份证,但没有条件任何身份证。你能帮我吗 您可以使用HAVING子句 此查询将使用仅包含回答所有条件的
ID
的派生表:
SELECT *
FROM Table
WHERE ((AttrID = 3 AND ValStr ='510') OR
(AttrID = 7 AND ValStr ='2016') OR
(AttrID = 8 AND ValStr ='05')
) AND
DefID = 1375552
试试这个
SELECT t.* FROM YourTable t
INNER JOIN(SELECT s.Id FROM YourTable s
WHERE (s.AttrID = 3 AND s.ValStr ='510') OR
(s.AttrID = 7 AND s.ValStr ='2016') OR
(s.AttrID = 8 AND s.ValStr ='05')
GROUP BY s.Id
HAVING COUNT(distinct s.AttrID) = 3) t2
ON(t.id = t2.id)
示例数据中的
DefId
在哪里?您能否根据示例数据提供预期的输出?我忘了为所有行键入相同的数据扫描您发布的查询结果?您以前没有问过这个问题吗?反正我也不工作你的质询现在@FikretSavaş是的,已经工作了非常感谢
select id from YourTable
where ((AttrID = 3 AND ValStr ='510') OR
(AttrID = 7 AND ValStr ='2016') OR
(AttrID = 8 AND ValStr ='05')
)
group by id having count(*)=3