gpt4 book ai didi

sql - 如何在单个表上执行UNION?

转载 作者:行者123 更新时间:2023-12-04 04:12:44 24 4
gpt4 key购买 nike

我只需要显示所有居住在“彼得斯”或“乌鸦”大街上的客户的姓名,姓氏和地址以及DOB。

很好,我这样做是这样的:

SELECT Customers.FirstName, Customers.Surname,
Customers.CustomerAddress, Customers.DOB
FROM Customers
WHERE
( Customers.CustomerAddress LIKE '%'+ 'Peters' + '%'
or Customers.CustomerAddress LIKE '%'+ 'Crows'+ '%')

但是后来我读了一些书,上面说:

Use a UNION query to produce the results.



所以我读了一些 UNION,但是大多数情况下我看到两个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

但是我得到了错误:

All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.



这是可以理解的,因为我的第一个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子句似乎是您的联合查询中的问题。

关于sql - 如何在单个表上执行UNION?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12026555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com