gpt4 book ai didi

sql - 如何将 UNION 语句转换为 JOIN 语句

转载 作者:行者123 更新时间:2023-12-02 06:27:53 34 4
gpt4 key购买 nike

我有三个表。

Table: Location

ID | Name
-------+--------
1 | Paris
2 | London
3 | Sydney

Table: Loc_Map

PrimaryLoc | SecondaryLoc
-----------+-----------
1 | 3

Table: User

ID | PrimaryLocID
----+-------------
22 | 1

我想要这个输出,用于 ​​userID:22。

LocationID | LocationName
1 | Paris
3 | Sydney

请注意,结果包含使用映射表映射的两个位置 ID 的数据。我已经使用 UNION 运算符实现了所需的输出,如下所示:

SELECT L.id, L.name 
FROM
location L
INNER JOIN Loc_Map LM ON L.id = LM.PrimaryLoc
INNER JOIN User U ON U.PrimaryLocID = LM.loc_id
WHERE U.id = 22

UNION

SELECT L.id, L.name
FROM
location L INNER JOIN User U ON L.id = U.PrimaryLocID
WHERE U.id = 22

为了提高性能,我试图将此 SQL 查询转换为 JOIN 语句,但不能。一个 primaryloc 可以有多个 secondaryloc。我尝试尽可能好地格式化这个问题,但如果看起来很奇怪,请原谅我在格式化方面的经验不足。我也努力想出一个合适的通用问题标题,但除了给定的问题之外别无他法。如果你想到一些,请告诉我。

我正在使用 SQL Server 2000。

最佳答案

为什么不只是:

SELECT L.id, L.name 
FROM
location L
INNER JOIN Loc_Map LM ON L.id in (LM.PrimaryLoc, LM.SecondaryLoc)
INNER JOIN User U ON U.PrimaryLocID = LM.loc_id
WHERE U.id = 22

但是请注意,联合不会在任何一般意义上“胜过”联接。他们是两个不同的东西。

关于sql - 如何将 UNION 语句转换为 JOIN 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51313028/

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