[英]MySQL Select all rows not like the query
我嘗試在Stackoverflow和Google上搜索此內容,但未找到任何內容,對重復的內容進行了模糊處理,如果有人將我指向原始問題(如果存在),我將不勝感激。
目前,我有一個包含3列的表格:id,開始時間和結束時間。 然后,我對從10:30 10.10.2014開始到13:45 10.10.2014結束的預訂使用查詢,如下所示:
SELECT *
FROM reservations
WHERE ('2014-10-10 10:30:00' BETWEEN starttime AND endtime)
OR
('2014-10-10 13:45:00' BETWEEN starttime AND endtime)
OR
('2014-10-10 10:30:00' >= starttime AND '2014-10-10 13:45:00' <= endtime)
OR
('2014-10-10 10:30:00' <= starttime AND '2014-10-10 13:45:00' >= endtime);
因此,查詢將檢查該保留是否與任何現有保留沖突,然后返回沖突的保留。 但我希望它做相反的事情,並返回與查詢不沖突的所有行。
我已經嘗試解決這個問題很多小時了,不勝感激將我推向正確方向的任何提示。
我簡化了您的查詢(顯示沖突):
SELECT *
FROM reservations
WHERE '2014-10-10 10:30:00' <= endtime
AND starttime <= '2014-10-10 13:45:00'
要獲取與查詢日期不沖突的所有行:
SELECT *
FROM reservations
WHERE NOT ('2014-10-10 10:30:00' <= endtime
AND starttime <= '2014-10-10 13:45:00')
試試這個:
select *
from reservations
where starttime >= '2014-10-10 10:40:00'
and endtime <= '2014-10-10 13:45:00'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.