我試圖像下面SQL IN子句 - 空集
SELECT * FROM tbl WHERE col IN (SELECT col1 FROM tbl1)
然而,當SELECT col1 FROM tbl1
返回任何結果,我想顯示從TBL的所有結果
像這樣的事情
的可能性IF(SELECT col1 FROM tbl1)
SELECT * FROM tbl WHERE col IN (SELECT col1 FROM tbl1)
ELSE
SELECT * FROM tbl
我試圖像下面SQL IN子句 - 空集
SELECT * FROM tbl WHERE col IN (SELECT col1 FROM tbl1)
然而,當SELECT col1 FROM tbl1
返回任何結果,我想顯示從TBL的所有結果
像這樣的事情
的可能性IF(SELECT col1 FROM tbl1)
SELECT * FROM tbl WHERE col IN (SELECT col1 FROM tbl1)
ELSE
SELECT * FROM tbl
您可以添加NOT EXISTS()
聲明。雖然這種解決方案不會對大型數據集的高效,所以更有效的方法,你可以使用PL/SQL
SELECT * FROM tbl
WHERE col IN(SELECT col1 FROM tbl1)
OR NOT EXISTS(SELECT 1 FROM tbl1)
它似乎是一個簡單的解決方案。但我不明白「這個解決方案對於大量數據不會有效」?還有其他方法可以提高效率嗎? –
是的,'PL/SQL'做類似於你要求的東西,但那是另一回事。只要你有適當的索引,這應該是好的。 – sagi
你尋找SQL解決方案還是PL/SQL解決方案?你的問題的文字聽起來像你正在尋找一個SQL解決方案,但標籤包含PL/SQL。 –