gpt4 book ai didi

mysql - 在SQL中,有没有办法通过比较两个表之间的字段来进行UNION?

转载 作者:行者123 更新时间:2023-11-29 16:27:42 26 4
gpt4 key购买 nike

在 SQL 中,有没有办法在两个表之间进行联合,以便通过两个表之间的公共(public)条件过滤结果?

基本上我想这样做......

SELECT City, Country FROM Customers
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Customers.Country = Suppliers.Country

包括一些示例数据...

Customers
City Country
Alb USA
Alb UK
NY Russia

Suppliers
City Country
LA USA
DesMoines UK
NY USA

我想返回城市指定为 Alb 的客户记录 - 加上供应商的记录,该记录具有相同的国家/地区指定,与城市指定为 Alb 的客户记录相同。

现在我已经研究了一下它 - 我发现我需要执行嵌套 SQL 语句...

Select * from Supplier
Where Country =
(Select Country from Customer Where City = 'Alb')

很抱歉让大家感到困惑 - 我只是需要考虑一下。

最佳答案

听起来你希望结果集是一个列表

  • 位于供应商所在国家/地区的所有客户。
  • 以及位于客户所在国家/地区的所有供应商。

您可以使用Common Table Expression (CTE),它基本上为给定查询创建数据的临时 TableView 。它可能仅在当前版本的 MySql(版本 8.0)中可用。

我在 DB Fiddle 上设置了示例数据 并使用 CTE 获取您通过此查询描述的结果。

WITH cteCommonCountries AS 
(
SELECT Customers.Country
FROM Customers
JOIN Suppliers
WHERE Customers.Country = Suppliers.Country
)
SELECT City, Country from Customers where Country IN (SELECT Country from cteCommonCountries)
UNION
SELECT City, Country from Suppliers where Country IN (SELECT Country from cteCommonCountries);

关于mysql - 在SQL中,有没有办法通过比较两个表之间的字段来进行UNION?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54154681/

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