mysql - 为什么这 3 个查询没有返回正确的记录

标签 mysql sql union union-all

我有一个返回 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 行?

最佳答案

用 % 声明你的变量。

DECLARE @a as varchar(Max) = '%PARK MANOR%'

或者更新您的查询以添加 %

where ProblemCrossStreet Like CONCAT('%', @a, '%') OR ProblemStreet Like CONCAT('%', @a, '%') Or 
ProblemSubdivision Like CONCAT('%', @a, '%')

关于mysql - 为什么这 3 个查询没有返回正确的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52371441/

相关文章:

union - KDB:时间间隔联合

javascript - Alasql:UNION(或UNION ALL)仅给出表1的结果

sql - 如何检查数据库列的特殊符号

mysql - 将三个表连接在一起以从每个表中获取三个值

sql - 使用 SQL 将多个字段连接成一个字段

javascript - 使用 Ajax/jQuery 发出 POST 请求以将行插入到 Node js 服务器上的 mysql 表中

sql - 如何交叉两个联合查询

PHP比较两个表的结果

mysql - SQL 表连接另一个表

mysql - 如何更正 SQL 表中的日期值?