Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql中的最大分组_Mysql - Fatal编程技术网

mysql中的最大分组

mysql中的最大分组,mysql,Mysql,假设我有以下两个条目: `id` | `timestamp` | `content` | `reference` 1 | 2012-01-01 | NEWER | 1 2 | 2013-01-01 | NEWEST | 1 3 | 2011-01-01 | OLD | 2 我需要查询的以下结果: `id` | `t

假设我有以下两个条目:

`id`     |    `timestamp`   |   `content`   |  `reference`
 1       |     2012-01-01   |    NEWER      |   1
 2       |     2013-01-01   |    NEWEST     |   1
 3       |     2011-01-01   |    OLD        |   2
我需要查询的以下结果:

`id`     |    `timestamp`   |   `content`   |  `reference`
 2       |     2013-01-01   |    NEWEST     |   1
 3       |     2011-01-01   |    OLD        |   2
以下是我目前掌握的信息,但这是不正确的:

SELECT * FROM table GROUP BY reference
这里的正确查询是什么

我希望每个参考id获得最新的
内容
。在上面的示例中,有两个参考id(1和2),我希望获得每个id的最新条目

SELECT * 
FROM (SELECT * FROM table ORDER BY timestamp desc) as sub
GROUP BY reference
如果要展开查询,请将限制逻辑放入子查询中,如下所示,以获得更好的性能:

SELECT * 
FROM (SELECT * 
      FROM table 
      WHERE 1=1 and 2=2
      ORDER BY timestamp desc
     ) as sub
GROUP BY reference

我想你想要最新的参考资料?大概是这样的:

SELECT * FROM my_table
WHERE id IN (
  SELECT id FROM my_table ORDER BY timestamp DESC GROUP BY reference LIMIT 1
);

你能用语言描述你所期望的吗。您的数据示例并不明显。请查看更新后的响应。如果您可以将架构和测试数据放在SQLFiddle上(对于所有类似的问题),这将对读者非常有帮助。唉,这是行不通的-
id
不属于子选择中的
groupby
。没有时间进一步研究,但希望它能给你一些想法!出于好奇,为什么在
中输入1=1和2=2会使查询更高效?此外,您的查询是否比在
中输入
的查询性能更好(与其他两个答案一样)?如果是,为什么?我不是建议您使用
1=1
,而是建议您使用
where content='old'
来限制内部查询中的where结果。嵌套查询和
语句中的
具有大致相同的性能。
select * from table where reference_id in 
    (select max(id) from table group by reference)