簡體   English   中英

MySQL 查詢 - 如何過濾多個列的一個條件

[英]MySQL Query - How to Filter on One Condition for Multiple Columns

我正在尋找一種使以下查詢更簡潔的方法。 在我的 where 子句中,我過濾了兩個滿足相同條件的日期列。

select * 
from table 
where (colA between '2021-04-01' and '2021-04-03') # same date condition
or (colB between '2021-04-01' and '2021-04-03') # same date condition

有沒有更優雅的方法來做到這一點?

我對您當前的查詢沒有問題,實際上我建議您保持原樣。 考慮兩個日期范圍之一可能會改變的可能性,從而迫使您或您的代碼的繼承者再次恢復到此版本。 但是假設colA和/或colB具有時間組件,您的日期范圍邏輯可能會出現小問題。 也許使用這個版本:

SELECT *
FROM yourTable
WHERE colA >= '2021-04-01' AND colA < '2021-04-04' OR
      colB >= '2021-04-01' AND colB < '2021-04-04';

上述日期范圍包括 2021 年 4 月 1 日至 2021 年 4 月 3 日,兩端均含,但不包括 2021 年 4 月 4 日全天。

你的查詢沒問題。 但如果您願意,您可以在子查詢中定義常量:

select t.* 
from table t cross join
     (select '2021-04-01' as dt_start, '2021-04-03' as dt_end) params
where colA between dt_start and dt_end or   # same date condition
      colB between dt_start and dt_end      # same date condition

暫無
暫無

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

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