SQL Query如何获取数据

时间:2014-05-08 08:53:04

标签: sql

我有一个数据库,其中我有以下列:

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 */

我的查询应该是什么?不幸的是,我不能再改变数据库结构了。

非常感谢你!

3 个答案:

答案 0 :(得分:2)

尝试

SELECT name, date, MAX(time) FROM mytable
GROUP BY name, date
ORDER BY name,date

http://sqlfiddle.com/#!3/470ce/5/0

演示

答案 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;

虽然数据库设计很糟糕,但我强烈建议您迁移到更好的设计。