gpt4 book ai didi

sql - 将多个右连接重写为左连接

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

我读过

SELECT * FROM table_0 
RIGHT JOIN table_1 ON table_0.col_0 = table_1.col_0;

等同于:

SELECT * FROM table_1
LEFT JOIN table_0 ON table_0.col_0 = table_1.col_0;

我如何重写一个较长的查询,比方说:

SELECT * FROM  table_0
RIGHT JOIN table_1 ON table_1.col_0 = table_0.col_0
RIGHT JOIN table_2 ON table_2.col_1 = table_1.col_1
RIGHT JOIN table_3 ON table_3.col_2 = table_2.col_2;

只使用 LEFT JOINS?我会对此类问题的通用解决方案感兴趣。

如果有必要的话,我对 PostgreSQL 方言特别感兴趣。从解释输出中我可以看出,这里仅将 LEFT 替换为 RIGHT 是不够的。查询返回不同的行数。

最佳答案

只是颠倒表格:

SELECT *
FROM table_3 LEFT JOIN
table_2
ON table_3.col_2 = table_2.col_2 LEFT JOIN
table_1
ON table_2.col_1 = table_1.col_1 LEFT JOIN
table_0
ON table_1.col_0 = table_0.col_0;

LEFT JOIN 将所有表保留在第一个 表中,无论条件的计算结果是真、假还是 NULL。 RIGHT JOIN 保留第二个表中的所有行,无论条件如何。

我想指出,这对于您编写的 ON 条件是正确的。它可能不适用于所有 ON 条件。

关于sql - 将多个右连接重写为左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31368502/

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