我正在尝试从具有sno列最大值的mysql表中执行不同的记录。我尝试过以下查询,但没有任何结果。
SELECT DISTINCT p.sno AS sno, p.short_order,p.fir_sno
FROM pre_trials p, fir f
WHERE p.fir_sno = f.sno
GROUP BY p.fir_sno
ORDER BY p.sno ASC对于上面的查询,我有下表:

它应该返回sno 4,5,因为两者都具有sno列的最大值。我不知道如何根据我的要求取回记录?任何帮助都将不胜感激。谢谢
编辑:显示Create,pre_trials

发布于 2016-01-22 17:57:20
假设fir是主表,(sno)是它的主键:
SELECT p.sno, p.short_order, p.fir_sno
FROM fir AS f
JOIN pre_trials AS p
ON p.fir_sno = f.sno
AND p.sno =
( SELECT pi.sno
FROM pre_trials AS pi
WHERE pi.fir_sno = f.sno
ORDER BY pi.sno DESC
LIMIT 1
) ;(fir_sno, sno)上的复合索引将极大地提高查询的效率。
还请注意,我使用了DESC,而您的代码在解释中使用了ASC信标,并希望得到您想要的结果--您需要的是具有最大sno的行。
还请看一个类似的问题,以进一步解释查询的工作方式:为每个作者选择一篇最新的文章
https://dba.stackexchange.com/questions/126619
复制相似问题