有這個:
code IN
(
SELECT DISTINCT aaa.code
FROM ORGHEADER AS aaa
LEFT JOIN ORGRELATEDPARTY AS bbb
ON aaa.oh_pk = bbb.parent
WHERE aaa.oh_pk NOT IN
(
SELECT fu.parent
FROM ORGRELATEDPARTY fu
WHERE fu.partytype = 'MNG'
)
)
閱讀這篇文章: 在 SQL 中將 IN 更改為 EXISTS
試圖將其更改為“存在”,但產生了這個并且它不起作用:
code EXISTS
(
SELECT *
FROM ORGHEADER AS aaa
LEFT JOIN ORGRELATEDPARTY AS bbb
ON aaa.oh_pk = bbb.pr_oh_parent
WHERE aaa.oh_pk NOT IN
(
SELECT fu.parent
FROM ORGRELATEDPARTY fu
WHERE fu.pr_partytype = 'MNG'
)
WHERE code = DISTINCT aaa.oh_code
)
錯誤是 3706:語法錯誤:預期在 '=' 和 'DISTINCT' 關鍵字之間有一些東西。
uj5u.com熱心網友回復:
您已經有多余的代碼。
在IN子查詢中,您從 中選擇一列ORGHEADER,因此LEFT連接只會增加噪音,因為它在任何情況下都會回傳 中的所有行ORGHEADER。
假設它code屬于一個別名表,t你可以這樣撰寫代碼EXISTS:
WHERE EXISTS (
SELECT 1
FROM ORGHEADER AS aaa
WHERE aaa.oh_code = t.code
AND aaa.oh_pk NOT IN (
SELECT parent
FROM ORGRELATEDPARTY
WHERE pr_partytype = 'MNG'
)
)
此外,如果表的列可能回傳s ,NOT IN則將不起作用。parentORGRELATEDPARTYnull
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/454333.html
標籤:sql 兆数据 存在 sql-in teradatasql
上一篇:如何使用案例陳述句獲取單個記錄
