在表上进行左连接时,是否有一个点没有使用该表中的任何条目?

问题描述 投票:0回答:1
CREATE OR REPLACE VIEW my_schema.my_table as
SELECT
    t.integer_id_column,
    t.col2,
    COALESCE(r.col1, r.col2) AS ID,
    r.col1,
    t.col3,
    t.col4,
    r.col2
FROM table1 t
LEFT JOIN table2 qr ON t.integer_id_column = qr.integer_id_column
LEFT JOIN table3 r ON r.integer_quantity = t.integer_quantity AND r.date = t.date
WHERE t.type = 'my_type' AND (t.cost = 0 or t.cost IS NULL)
ORDER BY 1 DESC;

我正在使用 postgresql 数据库,我看到上面的表已创建。我在

table2
上的左连接中看不到任何点,因为
select
语句实际上并未从
table2
中选择任何内容。是否有一些我不知道的原因导致这会在 postgresql 中完成?

postgresql
1个回答
0
投票

回答所提出的问题:在某些情况下它会产生影响

如果未定义

LEFT JOIN table2 ...

qr.integer_id_column
可以乘以输出行。 (即使在查询中的任何地方都没有使用任何表列,除了连接条件。)很少有用,但可能。
相反,如果 

UNIQUE

被定义为

LEFT JOIN
,则
qr.integer_id_column
是完全无操作的。那么乘法就无法发生。
旁白:在视图定义中不能将“col2”两次作为输出列名称。可能只是匿名列名时的一个失误。

© www.soinside.com 2019 - 2024. All rights reserved.