簡體   English   中英

MySQL查詢:如果存在子句

[英]Mysql Query : Where clause if Exists

我有一個MySQL數據庫,並且在其中有一個名為ProductMaster的表,該表具有6個字段“ Product_Id,Product_Name,Model,Opening_date,Closing_Date,Status”。 Opening_Date和Closing Date可以接受空值。因此某些記錄具有該字段的值

我有以下查詢以顯示該表中的記錄。

"select Product_Id,Product_Name,Model from ProductMaster  where Status=1"

現在,我想將查詢更改為在Opening_Date和Closing_Date上具有過濾器(如果它們不為null)

例如:如果某條記錄的Opening_Date為05/01/2009,結束日期為05/30/2009,那么我想檢查今天是否是這兩個日期之間的一個日期,如果是,請返回記錄

如果兩個字段值都為空,則返回記錄

有人可以幫助我構架查詢嗎? 提前致謝

查詢的WHERE部分(“ WHERE子句”)只是一個長布爾表達式。 這是什么意思? MySQL只希望它返回true或false,它被理解為“是。在結果中包括此行”。 或“否。不要在結果中包括此行。”

如果我理解正確,您想做兩件事:

  1. 檢查opening_dateclosing_date是否為null
  2. 檢查今天是否在這兩個日期之間。

而且您希望僅在#1為真時才發生#2。 可以表示為:

#1 AND #2

如果#1或#2為假,則將其評估為假。

可以翻譯為:

  1. (opening_date IS NOT NULL) AND (closing_date IS NOT NULL)
  2. NOW() >= opening_date AND NOW <= closing_date

因此,如果我們將表達式中的#1和#2當作兩個,我們說我們要使用( #1 AND #2 ),那么我們得到:

((opening_date IS NOT NULL) AND (closing_date IS NOT NULL)) 
AND (NOW() >= opening_date AND NOW <= closing_date`)

這就是您需要的WHERE子句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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