是否有可能在查詢中使用另一個select語句的where條件。例如:我可以使用where語句的select語句
WHERE main_section ='Supplier' AND type_of_pay ='Advance' AND
((select final_dateofpay FROM com_payments
WHERE main_section ='Supplier') IS NOT NULL)
是否有可能在查詢中使用另一個select語句的where條件。例如:我可以使用where語句的select語句
WHERE main_section ='Supplier' AND type_of_pay ='Advance' AND
((select final_dateofpay FROM com_payments
WHERE main_section ='Supplier') IS NOT NULL)
,您無法在where子句,因爲你的代碼
(select final_dateofpay FROM com_paymentsWHERE main_section ='Supplier')
返回多個行中使用這樣的子查詢。因此,它不能直接與IS NOT NULL
結合使用。記住where子句在行級操作。
但是,我認爲你想檢查子查詢是否返回結果。在這種情況下,你可以使用它像這樣
WHERE main_section ='Supplier' AND type_of_pay ='Advance' AND exists (select final_dateofpay FROM com_payments WHERE main_section ='Supplier')
SQL標準允許子查詢表達與像IN (...)
,NOT IN (...)
,EXISTS (...)
和NOT EXISTS(...)
報表一大堆。
在這種情況下,查詢是:
WHERE main_section ='Supplier' AND type_of_pay ='Advance' AND
EXISTS (select final_dateofpay FROM com_payments
WHERE main_section ='Supplier'))
此查詢的結果將是,你要麼因爲不存在與任何main_section 'Supplier'
或com_payments
所有原始行,因爲一個不就得不到行存在。
造成這種奇怪結果的原因是您沒有引用子查詢中包含select
語句的任何字段。在引用主查詢的子查詢where
中添加過濾器時,您可能會得到您要達到的結果。
你試過了嗎?你可以顯示其餘的查詢嗎? JOIN可能與子選擇的你更相關。 –
是的。這應該工作。 – Erik
看起來有點奇怪。你想做什麼?請看看'EXISTS'。 – jarlh