我正在寫一個複雜的MySQL查詢,我無法弄清楚如何完成它。當子查詢沒有返回任何行時刪除WHERE條件
這裏是一個的給我麻煩的部分(這只是我的查詢的一部分):
SELECT * FROM table AS t1
WHERE date < (
SELECT date FROM table AS t2
WHERE phase="B" AND t2.target = t1.target
)
基本上,我有一個項目,每一個與日期,相位(A,B,C)和目標。對於一個目標,有A型的多個項目,然後一個單和可選 B型的項目,然後與類型C.
對於每個目標物品,我想選擇所有以下這些條件的行:
- 如果以階段「B」的項目(可以叫他itemX),我想回到所有項目進行遜色於itemX
- 的日期的日期如果沒有項目與階段「B」,我想返回n all rows
date參數非常重要。在大多數情況下,這三個階段是不同的,並且不能重疊,但在某些情況下會發生這種情況。
這裏的問題是,我的子查詢不中的情況下2
的情況下,1返回任何行,和單個細胞如果我們在1的情況下,整個條件WHERE date < (...)
是無關緊要的,不應該在查詢中應用。
我試過IFNULL
和EXISTS
的幾種可能性,但我認爲我做錯了,因爲我不斷收到語法錯誤。
謝謝你工作=) – 3rgo