Dav*_*amp 9 sql union sql-server-2008
我需要显示所有居住在"彼得斯"或"乌鸦"大道的客户的姓名,地址和DOB.
这很好,我这样做:
SELECT Customers.FirstName, Customers.Surname,
Customers.CustomerAddress, Customers.DOB
FROM Customers
WHERE
( Customers.CustomerAddress LIKE '%'+ 'Peters' + '%'
or Customers.CustomerAddress LIKE '%'+ 'Crows'+ '%')
Run Code Online (Sandbox Code Playgroud)
但后来我读得更难了,它说:
使用UNION查询生成结果.
所以我在UNIONs 上读了一下,但大多数情况下我看到两个SELECT查询的返回值必须是相同的长度,并且通常示例使用2个不同的表?
所以我需要UNION在同一张桌子上执行一个表示所有在其地址中带有Peters和Crows字样的客户.我试过了:
SELECT Customers.CustomerAddress
FROM Customers
WHERE
( Customers.CustomerAddress LIKE '%'+ 'Peters' + '%'
or Customers.CustomerAddress LIKE '%'+ 'Crows'+ '%')
UNION
SELECT Customers.FirstName, Customers.Surname,
Customers.CustomerAddress, Customers.DOB
FROM Customers
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
使用UNION,INTERSECT或EXCEPT运算符组合的所有查询在其目标列表中必须具有相同数量的表达式.
这是可以理解的,因为我的第一个SELECT只返回3个结果(即我正在寻找的结果),而另一个返回所有被寻址的(包括我需要的).
所以我的确切问题是,如何UNION在同一张桌子上执行a (客户共10条记录),以便显示所有在其地址中包含Peters和Crows字样的客户?(其中3个记录与其他7个记录不匹配)
Run Code Online (Sandbox Code Playgroud)SELECT Customers.FirstName, Customers.Surname, Customers.DOB, Customers.CustomerAddress FROM Customers WHERE Customers.CustomerAddress LIKE '%'+ 'Main' + '%' UNION SELECT Customers.FirstName, Customers.Surname, Customers.DOB, Customers.CustomerAddress FROM Customers WHERE Customers.CustomerAddress LIKE '%'+ 'Gladys'+ '%'
在联盟中,两个或多个查询应始终在SELECT语句中具有相同数量的字段.WHERE子句似乎是您的Union查询中的问题