0
我有一個包含用戶事件信息的表,即每行包含一個ID,一個用戶的開始日期,完成日期和事件編號。示例:MySQL在一個表上交叉查詢
行1:ID 256 | StartDate 13360500 |完成日期13390500 | EventNum 3
我想所有的相交誰已完成事件3 & 2用戶行的,但我不明白,爲什麼我的查詢返回任何結果:
SELECT table_id FROM table
WHERE table_EventNum = 3
AND table_FinishDate > 0
AND table_id IN (SELECT table_id FROM table WHERE table_EventNum = 2);
這個查詢無子查詢(與底部其餘部分分離的行)返回一堆非空結果,因爲它應該這樣,子查詢也會返回一堆非空結果(同樣,它應該)。但由於某種原因,組合查詢根本不返回任何行。我知道IN
命令返回NULL,如果任一側的表達式爲NULL,但由於兩個查詢都返回結果,我不確定還有什麼可能導致此結果。
任何想法?謝謝!
是否有區別,我只選擇table_id而不是FinishDate和table_id?我認爲MySQL會首先執行SELECT操作,然後執行IN(ID)命令? – mgh14
SELECT table_id,FinishDate FROM table WHERE table_EventNum = 3 AND table_FinishDate> 0 AND table_id IN(SELECT table_id FROM table WHERE table_EventNum = 2); - 應該沒問題,沒有區別 – Tarik