繁体   English   中英

MySQL分组依据和查询顺序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM