[英]Mysql Group by and order by query
表格: gpreport
id stid stname gpdate
1 1234 store1 2014-11-16
2 1234 store1 2014-11-15
3 4321 store2 2014-11-17
4 4321 store2 2014-11-17
5 4321 store2 0000-00-00
6 1234 store1 2014-11-15
我必须获取stid的最后一个id,并且该stid具有该记录应显示的gpdate。 例如,最后一个id的stid 4321是5,它不应该显示记录,stid 1234的最后一个id是6,它具有gpdate,因此该记录应该显示。
我的查询是:
$sql="SELECT * FROM (SELECT stid, MAX(id) AS id FROM gpreport
WHERE gpdate >= CURDATE() GROUP BY stid) AS sid JOIN gpreport USING (stid, id)";
它也显示ID为4321的4。
使用子查询获取最新信息,然后将其与表结合以获取其他详细信息。
SELECT a.*
FROM gpreport a
INNER JOIN
(
SELECT stid, MAX(id) AS max_id
FROM gpreport
GROUP BY stid
) sub0
ON a.stid = sub0.stid
AND a.id = sub0.max_id
WHERE sub0.gpdate> '0000-00-00'
除了在子查询中检查日期以外,几乎所有的东西都差不多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.