如何使用SQl语法从MySQL表中的组中选择最新记录

时间:2013-10-16 10:18:55

标签: php mysql sql

我正在尝试获取每组的最新一行。

$SQL = "SELECT location_name, status, timecode FROM status_table WHERE location_name in ('G_01', 'J_01', 'M_01', 'A_01', 'U_01', 'W_01', 'W_1_01', 'C_01', 'G_2_01', 'M_01') GROUP BY location_name ORDER BY status";

查询仅提取第一行,按时间顺序排序不起作用

3 个答案:

答案 0 :(得分:0)

它只会拉出第一行,因为group by只在一列上。

尝试在GROUP BY子句中包含其他所选字段

$SQL = "SELECT location_name, status, timecode FROM status_table 
WHERE location_name in  
('G_01', 'J_01', 'M_01', 'A_01', 'U_01', 'W_01', 'W_1_01', 'C_01', 'G_2_01', 'M_01') 
GROUP BY location_name, status, timecode 
ORDER BY status";

答案 1 :(得分:0)

如果您有一个自动递增id列:

SELECT location_name, status, timecode FROM status_table WHERE id IN(
   SELECT MAX(id) FROM status_table WHERE location_name in ('G_01', 'J_01', 'M_01', 'A_01', 'U_01', 'W_01', 'W_1_01', 'C_01', 'G_2_01', 'M_01') GROUP BY location_name
) ORDER BY status

应该通过为每个"组"获取MAX id来工作。 (位置名称)然后获取该ID的详细信息,最后按状态

排序结果集

答案 2 :(得分:0)

我无法让你正确,但直到我理解我认为以下链接真的帮助你

1) php/MySQL insert row then get 'id'
2)的 Get the id of current mysql insert
3)的 MySQL - Select the last inserted row easiest way
4)的 mysql_insert_id

我希望以上链接有用....