2011-03-06 52 views
0

我用一個Mysql查詢來填充,你能幫我嗎?從多個表中選擇不同的訂單

我有兩個表:

用戶

ID |名稱
1 | foo1
2 | foo2
3 | foo3

的帖子

id | id_user | created_at | kind
1 | 2 | 15-03-2011 | a
1 | 2 | 14-03-2011 | b
2 | 3 | 13-03-2011 | a
1 | 2 | 12-03-2011 | b

我想要的是檢索de創建日期排序的每個用戶的最新帖子(類型無關緊要)。

我該怎麼做?

謝謝各位

回答

0

一個可能的查詢是:

SELECT 
u.id, 
(SELECT MAX(p.created_at) FROM posts AS p WHERE u.id = p.id_user) AS latest 
FROM 
user AS u; 

雖然相關子查詢可能不是這個最佳的解決方案。示例輸出:

users: 

+------+------+ 
| id | name | 
+------+------+ 
| 0 | test | 
| 1 | one | 
+------+------+ 

posts: 

+------+---------+------------+------+ 
| id | id_user | created_at | kind | 
+------+---------+------------+------+ 
| 0 |  0 | 2011-02-05 | a | 
| 1 |  1 | 2011-02-06 | b | 
| 2 |  0 | 2011-02-03 | a | 
| 3 |  1 | 2011-02-02 | b | 
+------+---------+------------+------+ 

output: 

+------+------------+ 
| id | latest  | 
+------+------------+ 
| 0 | 2011-02-05 | 
| 1 | 2011-02-06 | 
+------+------------+ 

您可以通過最新的DESC如果你希望得到所有用戶ID將最新的帖子的排序列表還可以添加命令來查詢的結束。

+0

非常感謝。你們再次做到了! – LuisClemente 2011-03-06 21:14:06

0

在id_user上使用GROUP BY和最大發布日期?

類似的東西:

SELECT u.name, p.id_user, MAX(p.created_at) 
FROM posts AS p 
LEFT JOIN user AS u ON u.id 
WHERE p.id_user = u.id 
GROUP BY id_user 
+0

我在這裏添加的唯一東西是按3排序(MAX()列的順序位置) – DRapp 2011-03-06 13:45:09