2017-09-29 103 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