我有一个返回4列45行的sql查询。
Select ComplaintID, ProblemStreet, ProblemCrossStreet,ProblemSubdivision
From Complaints
where ProblemCrossStreet Like '%PARK MANOR%' OR ProblemStreet Like '%PARK
MANOR%' Or ProblemSubdivision Like '%PARK MANOR%'
此查询返回4列31行:
DECLARE @a as varchar(Max) = 'PARK MANOR'
Select ComplaintID, ProblemStreet, ProblemCrossStreet,ProblemSubdivision
From Complaints
where ProblemCrossStreet Like @a OR ProblemStreet Like @a Or
ProblemSubdivision Like @a
我需要返回这个查询,它应该是2列45行
DECLARE @a as varchar(Max) = 'PARK MANOR'
Select ComplaintID,ProblemCrossStreet From Complaints Where
ProblemCrossStreet like @a
Union ALL
Select ComplaintID,ProblemStreet from Complaints Where ProblemStreet Like @a
Union ALL
Select ComplaintID, ProblemSubdivision From Complaints where
ProblemSubdivision like @a
最后一个查询怎么只返回34行?为什么这3个看起来相同的查询不返回相同的值,最重要的是,如何让我的第三个查询返回这2列和45行?
2条答案
按热度按时间cqoc49vn1#
简单:
和
做不同的事情。第一个寻找一个精确的匹配。第二种方法在名称中的任何地方寻找模式。
至于第三个查询,它使用
union all
. 所以,如果一行匹配两个条件,那么表单返回两行。你到底想要哪一个还不清楚。如果需要通配符匹配,则在
like
图案。如果您希望每个匹配都有一个单独的行,那么使用union all
.编辑:
你似乎想要:
3z6pesqy2#
用%来声明变量。
或更新查询以添加%