gpt4 book ai didi

sql - 在 WHERE 子句中将相关子查询写为 join

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

我有如下查询:

select 
a.id, a.title, a.description
from
my_table_name as a
where
a.id in (select id from another_table b where b.id = 1)

我的问题是,有什么方法可以避免在 where 子句中使用子查询并在 from 子句本身中使用它而不影响性能吗?

最佳答案

到目前为止给出的两个答案在一般情况下都是不正确的(尽管数据库可能具有独特的约束以确保它们在特定情况下是正确的)

another_table可能有多行具有相同的 id然后是 INNER JOIN将带回 IN 中不存在的重复项版本。试图用 DISTINCT 删除它们如果来自 my_table_name 的列可以更改语义自己有重复。

一般重写将是

SELECT a.id,
a.title,
a.description
FROM my_table_name AS a
JOIN (SELECT DISTINCT id
FROM another_table
WHERE id = 1) AS b
ON b.id = a.id

此重写的性能特征取决于实现。

关于sql - 在 WHERE 子句中将相关子查询写为 join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17103189/

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