2017-09-29 101 views
0

爲什麼這個查詢查詢與子查詢不返回應返回

SELECT * 
FROM tbl X 
WHERE NOT EXISTS (SELECT * FROM tbl Y WHERE X.end_date=Y.start_date) 
ORDER BY accommodation_id, start_date 

不會返回以下行的值?

enter image description here

我驗證未返回行添加AND accommodation_id = 7049WHERE條款,因此所得到的查詢是:

SELECT * FROM wp_byt_accommodation_vacancies X WHERE NOT EXISTS(SELECT * FROM wp_byt_accommodation_vacancies Y WHERE X.end_date=Y.start_date) AND accommodation_id = 7049 ORDER BY accommodation_id, start_date 

我驗證有沒有使用與start_date = '2017-04-08行對於accommodation_id以下查詢:

SELECT * FROM wp_byt_accommodation_vacancies WHERE accommodation_id = 7049 AND start_date = '2017-04-07' 
+0

請編輯您的問題聯繫起來,並清楚地表明,當前和預期的輸出,_text_,而不是圖像。 –

+0

請發佈來自兩個表的數據示例 –

回答

1

您應該使用以下查詢Ÿ

SELECT * 
FROM tbl X 
WHERE NOT EXISTS ( SELECT * 
        FROM tbl Y 
        WHERE X.end_date=Y.start_date 
        AND X.accommodation_id = Y.accommodation_id) 
ORDER BY accommodation_id, start_date 

你已經忘了關鍵X.accommodation_id = Y.accommodation_id