MySQL - 获取与另一个表不匹配的项目

时间:2016-03-29 13:58:23

标签: mysql

我有两个表(table1和table2)table1有两列day和timeSlot。 table2还有day和timeSlot列。 table1具有日期和时间行,table2具有包含日期​​和时间的插入数据的行。我的问题是

我正在尝试编写一个查询字符串,它会显示未采用的日期列表。

我尝试了以下内容:

但它会返回非常随机的行,实际上它只会占用其中一个日期和时间。

SELECT table1.day, table1.timeSlot 
FROM woodlandsBookingVipSalesDates 
INNER JOIN table1 ON table1.day != table2.day AND table1.timeSlot != table2.timeSlot

我的问题是我如何获得没有拍摄日期和时间的列表。

2 个答案:

答案 0 :(得分:2)

你的问题不是很清楚

我假设woodlandsBookingVipSalesDates包含所有使用的日期和时间段,table_1包含所有可用的日期和时间段

所以我会简单地做

SELECT table1.day, table1.timeSlot 
FROM table_1 WHERE
(day, timeSlot) NOT IN (SELECT day, timeSlot FROM woodlandsBookingVipSalesDates )

答案 1 :(得分:1)

假设您的意思是woodlandsBookingVipSalesDatestable1并加入table2 ...

使用NOT EXISTS

SELECT t1.day, t1.timeSlot 
FROM table1 t1
WHERE NOT EXISTS (SELECT NULL
                  FROM table2 t2
                  WHERE t1.day != t2.day 
                  AND t1.timeSlot != t2.timeSlot
                 )