日期:2014-05-16  浏览次数:20777 次

请教一个sql的写法,谢谢大家!
看起来并不困难,但是就是一时都写不出来,请各位高手帮忙.
问题是这样的,显示出一个A发给其他用户,以及其他用户发给A的聊天记录,并且把A发给B,以及B发给A的记录合并,然后取出其中最新的一条.也就是说与A所有相关的聊天记录按人来排序,显示最新的一条,并统计总数.

------解决方案--------------------
SELECT A.USER_ID, A.QTY, B.*
FROM (SELECT T.USER_ID, COUNT(*) QTY, MAX(T.ID) ID
FROM (SELECT SRC_USER_ID USER_ID, ID
FROM TEST_TABLE
UNION ALL
SELECT DES_USER_ID USER_ID, ID 
FROM TEST_TABLE) T
GROUP BY USER_ID) A,
TEST_TABLE B
 WHERE A.ID = B.ID;