[英]How to select all records greater than a date in mysql table?
我的表格:(以下的 validfrom
和validto
以及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
我想檢索id
為2
且validto
大於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.