0

以下の表では、これを行う方法がわかりませんが、一意の PhoneNumber ごとに最新の行を返すクエリを作成するにはどうすればよいですか?

PhoneNumber    MessageText               ReceiveTime        
-------------  ------------------------  -------------------
+639148186649  Delivery please           2013-03-19 01:12:55
+639148186649  I need this item          2013-03-22 02:15:01
+639148186649  I need more of this item  2013-03-23 12:01:02
+639194357455  How much for this...      2013-03-24 16:36:33
+639194357455  What time do you open?    2013-03-24 17:55:07
4

3 に答える 3

1

答えが見つかりました!

SELECT s1.PhoneNumber, s1.MessageText, s1.ReceiveTime FROM mytable s1 LEFT JOIN mytable s2
    ON (s1.PhoneNumber = s2.PhoneNumber AND s1.ReceiveTime < s2.ReceiveTime)
    WHERE s2.ReceiveTime IS NULL ORDER BY ReceiveTime DESC
于 2013-03-29T23:48:08.817 に答える
0

1 つの列でグループ化して、そのグループに依存しない他の列を返すことはできません。いくつかのヒントについては、この質問への回答を参照してください。

于 2013-03-29T22:51:27.110 に答える
0

私はこれがうまくいくはずだと思う...

SELECT *
FROM PhoneTable
GROUP BY PhoneNumber
HAVING ReceiveTime = MAX(ReceiveTime)
ORDER BY ReceiveTime

..または、このようなことをしなければならないかもしれません...

SELECT PhoneNumber, MessageText, ReceiveTime
FROM PhoneTable t
WHERE ReceiveTime = (SELECT MAX(ReceiveTime)
                     FROM t
                     GROUP BY PhoneNumber
                     HAVING PhoneNumber = t.PhoneNumber)
于 2013-03-29T23:03:54.917 に答える