簡體   English   中英

MySQL選擇不喜歡查詢的所有行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM