2009-04-22 37 views
3

爲什麼我問這個的原因是由於遺留代碼,所以裸跟我如何在自己的查詢中獲得某個值的總髮生次數?

比方說我們有這個疑問

SELECT * FROM table 

,並從它這個結果。

id | user_id 
------------ 
1 | 1 
------------ 
2 | 1 
------------ 
3 | 2 
------------ 
4 | 1 

我怎麼能拿的USER_ID多久出現另一場數(不包括一些主要的SQL查詢)

id | user_id | count 
-------------------- 
1 | 1  | 3 
-------------------- 
2 | 1  | 3 
-------------------- 
3 | 2  | 1 
-------------------- 
4 | 1  | 3 

目前在代碼中我們有這個價值,但是我們正在實施排序,以這張表和我希望能夠在SQL查詢中進行排序。

順便說一句,如果這是不可能的,沒有一些重大伎倆,我們只是跳過對該字段的排序。

回答

3

你只是想在結尾處添加一個子查詢,我相信:

SELECT 
    t.id, 
    t.user_id, 
    (SELECT COUNT(*) FROM table WHERE user_id = t.user_id) AS `count` 
FROM table t; 
+0

謝謝,有些時候你只是不能直截了當地思考。 – 2009-04-22 15:18:21

0
SELECT o.id, o.user_id, (
    SELECT COUNT(id) 
    FROM table i 
    WHERE i.user_id = o.user_id 
    GROUP BY i.user_id 
) AS `count` 
FROM table o 

我懷疑這個查詢爲不是性能的怪物,但它應該工作。

相關問題