我一直在尝试构建一个sql查询,它从(表)中找到所选id的最新日期,以满足'type'在层次结构'vegetables'中的条件。我的目标是能够在每个id满足max(date)和层次结构条件时获得整行。
Example values
ID DATE PREFERENCE AGE
123 1/3/2013 carrot 14
123 1/3/2013 apple 12
123 1/2/2013 carrot 14
124 1/5/2013 carrot 13
124 1/3/2013 apple 13
124 1/2/2013 carrot 14
125 1/4/2013 carrot 13
125 1/3/2013 apple 14
125 1/2/2013 carrot 13
我尝试了以下
SELECT *
FROM table
WHERE date in
(SELECT max(date) FROM (table) WHERE id in (123,124,125))
and preference in
(SELECT preference FROM (hierarchy_table)
WHERE hierarchy = vegetables))
and id in (123,24,125)
但是它没有给出符合层次结构条件的每个id的最新日期。 (例如,在这种情况下,我只会得到id 124)
提前谢谢!
答案 0 :(得分:1)
SELECT max(date) FROM (table) WHERE id in (123,124,125)
为您提供所有日期的最长日期,您需要对它们进行分组。 尝试替换为:
SELECT max(date) FROM (table) GROUP BY id
这样您就可以获得每个id的最长日期
答案 1 :(得分:1)
我想出来了。请参阅下面的查询作为示例:
SELECT * FROM (table) t
WHERE t.date in
(SELECT max(date) FROM table sub_t where t.ID = sub_t.ID and (date !> (currentdate))
and preference in
(SELECT preference FROM (hierarchy_table) WHERE hierarchy ='vegetables')
and ID in ('124')
答案 2 :(得分:0)
更改:
max(date)
致:
-- if your date data is in mm/dd/yyyy
max( str_to_date( date, '%m/%d/%Y' ) )
OR
-- if your date data is in dd/mm/yyyy
max( str_to_date( date, '%d/%m/%Y' ) )