簡體   English   中英

如何在mysql表中選擇所有大於日期的記錄?

[英]How to select all records greater than a date in mysql table?

我的表格:(以下的 validfromvalidto以及03JUL2014均為DATE類型,而不是STRING

id   type    validfrom    validto 
-------------------------------------
1   "APPLE"   10MAY2011    15APR2012
1   "APPLE"   19APR2012    15APR2017
1   "ORANGE"   10MAY2011    15APR2012
1   "ORANGE"   19APR2012    15AUG2018
1   "PEAR"   10MAY2012    15APR2013
1   "PEAR"   10MAY2011    15APR2018
2   "APPLE"   10MAY2011    15APR2017
2   "APPLE"   10MAY2011    15APR2012
2   "ORANGE"   10MAY2011    15APR2012
2   "ORANGE"   10MAY2011    15APR2015
2   "ORANGE"   10MAY2007    15APR2019
2   "PEAR"   10MAY2003    15APR2012
2   "PEAR"   10MAY2006    15APR2022

我想檢索id2validto大於03JUL2014所有記錄。

因此,我必須得到:

2   "APPLE"   10MAY2011    15APR2017
2   "ORANGE"   10MAY2007    15APR2019
2   "PEAR"   10MAY2006    15APR2022

我試過了:

SELECT type, validfrom, MAX(validto) FROM crew_qualifications 
               WHERE id=2 AND validto >= 03JUL2014

它只給了我:

2   "PEAR"   10MAY2006    15APR2022

在您的查詢中,您寫入MAX(validto),然后僅返回有效值為max的那些行

您刪除MAX(validto),然后返回正確的ans

首先找到給定時間范圍內每種類型的最大日期。 然后再次與您的表一起獲取完整的記錄。

select cq.type, cq.validfrom, cq.validto
from crew_qualifications cq
join
(
  select type, max(validto) as validto
  from crew_qualifications 
  where validto >= '2014-07-03'
  group by type
) wanted_cq
on wanted_cq.type = cq.type and wanted_cq.validto = cq.validto;

關於您的查詢:您選擇不帶組的MAX(validto),以便獲得整個表(即一條記錄)的MAX(validto)。 除了未指定要查看的類型和有效值(最小值,最大值或平均值)之外,還從表中獲得了MAX(validto)隨機類型和有效validfrom。 (除了validto >= 03JUL2014應該會給您一個語法錯誤。我很驚訝它顯然沒有。我不知道,MySQL在這里是如何解釋的。)

暫無
暫無

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

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