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
中选择任何内容。是否有一些我不知道的原因导致在 Postgres 中完成此操作?
回答所提出的问题:它可以有所作为。
如果未定义LEFT JOIN table2 ...
,
qr.integer_id_column
可以乘以输出行。 (即使在查询中的任何地方都没有使用任何表列,除了连接条件。)很少有用,但可能。相反,如果 UNIQUE
被定义为
LEFT JOIN
,则 qr.integer_id_column
是完全无操作的。乘法不会发生,你可以安全地删除它。旁白:在视图定义中不能将“col2”两次作为输出列名称。可能只是匿名列名时的一个失误。