我有一个数据库,其中我有以下列:
id
name
date
time
item1
item2
item3
有很多名字'但不同的' id。对于每个姓名',都有不同的日期'。 ' date'也可以复制。在每个'日期'下,有不同的时间'
因此,数据库中的示例数据如下:
name date time
Name_1 2013-01-01 1:30
Name_1 2013-01-01 4:30
Name_1 2013-01-01 7:30
Name_1 2013-01-02 12:30
Name_1 2013-01-02 14:30
Name_1 2013-01-02 17:30
Name_2 2013-01-01 1:30
Name_2 2013-01-01 4:30
Name_2 2013-01-01 7:30
Name_2 2013-01-02 12:30
Name_2 2013-01-02 14:30
Name_2 2013-01-02 17:30
如果我希望输出为:
Name_1 2013-01-01 7:30 /* last time checked for 2013-01-01 of Name_1 */
Name_1 2013-01-02 17:30 /* last time checked for 2013-01-02 of Name_1 */
Name_2 2013-01-01 7:30 /* last time checked for 2013-01-01 of Name_2 */
Name_2 2013-01-02 17:30 /* last time checked for 2013-01-02 of Name_2 */
我的查询应该是什么?不幸的是,我不能再改变数据库结构了。
非常感谢你!
答案 0 :(得分:2)
尝试
SELECT name, date, MAX(time) FROM mytable
GROUP BY name, date
ORDER BY name,date
演示
答案 1 :(得分:0)
SELECT
`name`, `date`, MAX(`time`) AS last_checked
FROM your_table
GROUP BY `name`, `date`
答案 2 :(得分:0)
如果我理解正确,您想知道每天最后一次检查的时间。
你可以用
做到这一点Select name, date, max(time) from table_name GROUP BY name, date, ORDER BY date DESC;
虽然数据库设计很糟糕,但我强烈建议您迁移到更好的设计。