如果我想获得每个"数字"的MAX(changeNo)行,请entry(当note是另一个表的JOIN列时),如query:
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)
但是这需要来自"全局最大值"的最大值,而不是来自每个相同"数字"的最大值。条目。
input data:
id|number|date|changeNo|note
01|150052|1603|00000001|0x22
02|150052|1603|00000002|0x45
03|150052|1603|00000003|0x64
04|150053|1603|00000001|0x89
05|150053|1603|00000002|0x56
06|150054|1603|00000001|0x77
07|150054|1603|00000002|0x84
08|150055|1603|00000001|0x46
expected output:
id|number|date|changeNo|note
03|150052|1603|00000003|0x64
05|150053|1603|00000002|0x56
07|150054|1603|00000002|0x84
08|150055|1603|00000001|0x46]
答案 0 :(得分:0)
您需要相关子查询:
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
的最大值。注意:还有其他方法可以实现此类查询。通常,相关子查询是使用正确索引的最快方法,尤其是table(joinID, changeNo)
上的一个。