gpt4 book ai didi

sql - 如何使用连接而不是两个子查询

转载 作者:行者123 更新时间:2023-12-02 01:16:52 26 4
gpt4 key购买 nike

我有这两个查询,它们最初是我想在连接上执行的子查询,但我不确定如何正确执行此操作。

我的小示例表如下所示

SupplierId|CompanyName|Country

这些字段是强制性的,因此它们都可以加入。我原来的子查询看起来像这样

select *
from Suppliers
where CompanyName != 'Nord-Ost-Fisch Handelsgesellschaft mbH'and Country =
(Select country
from Suppliers
where CompanyName = 'Nord-Ost-Fisch Handelsgesellschaft mbH');

我的查询的第一部分是查找属于公司名称并返回 Germay 的国家/地区

Select Country
From Suppliers
Where CompanyName = 'Nord-Ost-Fisch Handelsgesellschaft mbH'

我查询的第二部分查找与上述查询相关的所有供应商。 Where Country = 'Germany' 不应硬编码。

Select *
From Suppliers
Where Country = 'Germany' -- this based on above statement
and CompanyName != 'Nord-Ost-Fisch Handelsgesellschaft mbH'

我正在尝试的查询看起来像这样

 Select *
From Suppliers s join Suppliers ss
on s.SupplierID = ss.SupplierID
Where ...

我只是没有看到如果我加入这两个表,我如何仍然可以获得德国的国家然后查询该结果。

最佳答案

首先,在这种情况下,没有什么内在原因不能将其保留为子查询;实际上,我认为这使意图更加明显。

但是如果你想要一个自连接,它看起来是这样的(我使用 s 作为将返回实际供应商信息的表,以及 c对于仅按国家/地区过滤的表格):

select s.*
from Suppliers s
inner join Suppliers c
ON s.Country = c.Country
WHERE c.CompanyName = 'Nord-Ost-Fisch Handelsgesellschaft mbH'
AND s.CompanyName <> 'Nord-Ost-Fisch Handelsgesellschaft mbH'

只需具体说明您要过滤的表格字段。

或者,如果您愿意,可以将过滤器放在 c 上作为连接的一部分:

select s.*
from Suppliers s
inner join Suppliers c
ON s.Country = c.Country
AND c.CompanyName = 'Nord-Ost-Fisch Handelsgesellschaft mbH'
WHERE s.CompanyName <> 'Nord-Ost-Fisch Handelsgesellschaft mbH'

关于sql - 如何使用连接而不是两个子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42260264/

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