有如下两个表。这里的要求是获取表1中每个字母的ID和日期。如果一个字母有多个条目,则获取日期最新的条目。
我尝试连接表并使用行号和分区方法来获得预期的结果,这可行,但是有没有更好的方法来处理它?</p>
表1
S.no | Alphabet
-----|-----
1 | A
2 | B
3 | C
表2
Alphabet | ID | DATE
---------|---------|----------
A | A1 | 21/12/2016
A | A2 | 22/12/2016
C | C1 | 25/12/2016
C | C2 | 27/12/2016
C | C3 | 24/12/2016
B | B1 | 23/12/2016
预期结果
S.no | Alphabet | ID | Time
--------|------------|-------|-------
1 | A | A2 | 22/12/2016
2 | B | B1 | 23/12/2016
3 | C | C2 | 27/12/2016
最佳答案
你可以通过一系列的连接来完成你想要的事情。将两个表连接在一起,然后使用第二个连接到子查询,该子查询查找每个字母表的最新记录。
SELECT t1.`s.no`,
t1.Alphabet,
t2.ID,
t2.Time
FROM table1 t1
INNER JOIN table2 t2
ON t1.Alphabet = t2.Alphabet
INNER JOIN
(
SELECT Alphabet, MAX(TIME) AS max_time
FROM table2
GROUP BY Alphabet
) t3
ON t2.Alphabet = t3.Alphabet AND
t2.TIME = t3.max_time
关于sql - 如何在连接两个表时找到列的最大值而不使用 rownumber 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41609557/