我需要为仅居住在“彼得斯”或“乌鸦”大街上的所有客户显示姓名,姓氏和地址以及DOB。
很好,我这样做是这样的:
SELECT Customers.FirstName, Customers.Surname, Customers.CustomerAddress, Customers.DOB FROM Customers WHERE ( Customers.CustomerAddress LIKE '%'+ 'Peters' + '%' or Customers.CustomerAddress LIKE '%'+ 'Crows'+ '%')
但是后来我读了一些书,上面说:
使用UNION查询产生结果。
因此,我对UNIONs进行了一些阅读,但是大多数情况下,我看到两个 SELECT 查询返回的值 必须具有相同的长度 ,并且通常示例使用的是2个不同的表?
UNION
因此,我需要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
但是我得到了错误:
使用UNION,INTERSECT或EXCEPT运算符组合的所有查询在其目标列表中必须具有相同数量的表达式。
这是可以理解的,因为我的第一个 SELECT 仅返回3个结果(即我正在寻找的结果),而另一个返回所有已寻址的结果(包括我需要的结果)。
因此,我的确切问题是,如何UNION在同一张表(客户总共10条记录)上执行,以便显示所有地址中带有 Peters 和 Crows 字样的客户?(其中3条记录与其他7条不匹配的条件相匹配)
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子句似乎是您的联合查询中的问题。
SELECT
WHERE