Sql 筛选每个条目的最大值行
如果我想为每个“number”条目(当note是另一个表中的联接列时)获取MAX(changeNo)行,请执行以下操作:Sql 筛选每个条目的最大值行,sql,Sql,如果我想为每个“number”条目(当note是另一个表中的联接列时)获取MAX(changeNo)行,请执行以下操作: SELECT T0.id, T0.number, T0.date, T0.changeNo, T1.note FROM table T0 INNER JOIN table2 T1 ON T0.joinID = T1.joinID WHERE changeNo = (SELECT max(changeNo) FROM table) 但这从“全局最大值”
SELECT T0.id, T0.number, T0.date, T0.changeNo, T1.note
FROM
table T0 INNER JOIN table2 T1 ON T0.joinID = T1.joinID
WHERE
changeNo = (SELECT max(changeNo) FROM table)
但这从“全局最大值”中获取最大值,而不是从每个相同“数字”条目的最大值中获取最大值
您需要一个相关子查询:
SELECT T0.id, T0.number, T0.date, T0.changeNo, T1.note
FROM table T0 INNER JOIN
table2 T1
ON T0.joinID = T1.joinID
WHERE t0.changeNo = (SELECT max(t0.changeNo) FROM table tt0 WHERE tt0.joinID = t0.joinID) ;
这将返回每个joinID
的最大值。注意:还有其他方法可以实现这样的查询。通常,关联子查询是具有正确索引的最快方法,尤其是表(joinID,changeNo)
上的方法
SELECT T0.id, T0.number, T0.date, T0.changeNo, T1.note
FROM table T0 INNER JOIN
table2 T1
ON T0.joinID = T1.joinID
WHERE t0.changeNo = (SELECT max(t0.changeNo) FROM table tt0 WHERE tt0.joinID = t0.joinID) ;