我目前正在使用Oracle SQL開發人員學習SQL。當使用SELECT返回時,父查詢沒有看到子查詢的列*
在編寫查詢時,我想出了三個不同版本的相同查詢。
SELECT
sh.share_id
FROM shares sh
LEFT JOIN trades tr
ON sh.share_id = tr.share_id
WHERE trade_id is NULL;
SELECT
sr.share_id
FROM (SELECT sh.share_id, tr.trade_id
FROM shares sh
LEFT JOIN trades tr
ON sh.share_id = tr.share_id) sr
WHERE sr.trade_id is NULL;
SELECT
sr.share_id
FROM (SELECT *
FROM shares sh
LEFT JOIN trades tr
ON sh.share_id = tr.share_id) sr
WHERE sr.trade_id is NULL;
前兩個查詢編譯,運行和返回同樣的結果集,但是當我嘗試運行第三個查詢我得到的第三個查詢的第二行一個錯誤。 「SR」。「SHARE_ID」:無效標識符。 我知道*在SELECT語句中選擇所有列,所以爲什麼我會得到這個錯誤?
這兩個表是否有「trade_id」列? –
只有交易表具有「trade_id」列 – Suong
對不起,我不是想要詢問trade_id,但是「share_id」是在兩個表上還是僅在一個表上? –