所以我想LEFT JOIN
至少由多个列之一引用的所有文件:
SELECT
...
FROM
O o
LEFT JOIN binary_stream_value bsv ON o.binary_stream_value_id = bsv.id
LEFT JOIN artwork art ON o.artwork_id = art.id
LEFT JOIN (SELECT f.id FROM file f WHERE f.id = bsv.file_id OR f.id = art.file_id) f ON TRUE
...
此操作失败,
ERROR: invalid reference to FROM-clause entry for table "bsv"
LINE 212: ... LEFT JOIN (SELECT f.id FROM file f WHERE f.id = bsv.file_i...
^
HINT: There is an entry for table "bsv", but it cannot be referenced from this part of the query.
诚然,我一半希望这会失败,一半希望我错了。
编写这样的查询的正确方法是什么?
SELECT
...
FROM
O o
LEFT JOIN binary_stream_value bsv ON o.binary_stream_value_id = bsv.id
LEFT JOIN artwork art ON o.artwork_id = art.id
LEFT JOIN LATERAL (SELECT f.id FROM file f WHERE f.id = bsv.file_id OR f.id = art.file_id) f ON TRUE
...