表: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,而且这个记录应该显示的是gdate。例如,最后一个id的stid 4321是5,它不应该显示记录和stid 1234最后一个id是6并且它有gpdate,所以记录sholuld显示。
我的查询是:
$sql="SELECT * FROM (SELECT stid, MAX(id) AS id FROM gpreport
WHERE gpdate >= CURDATE() GROUP BY stid) AS sid JOIN gpreport USING (stid, id)";
它也显示了4321的id 4。
答案 0 :(得分:2)
使用子查询获取最新信息并将其与表格连接以获取其他详细信息。
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'
除了在子查询中检查日期之外,这几乎就是你所拥有的。