2016-05-06 53 views
-1

的計數的MySQL我有一個表爲了通過一列

tid item 
1 k1 
1 k1 
1 k1 
1 k2 
1 k2 
2 k1 
2 k3 
3 k2 
3 k1 
3 k4 

我想從項目總訂購,所以K1出現5次,,比K2出現3次,K3和K4一次。我想通過tid asc命令它,並計數項目desc。

我嘗試這個查詢,

SELECT * 
FROM `tes2` 
order by count(id_item) desc 

,但它只是返回1行。

tid item 
1 k1 

如何獲取所有數據?

,我想輸出是這樣

tid item 
    1 k1 
    1 k1 
    1 k1 
    1 k2 
    1 k2 
    2 k1 
    2 k3 
    3 k1 
    3 k2 
    3 k4 

通過項目的數量,使得它的排序。

+0

嘗試使用具有 – Mojtaba

+0

請提供您的問題與表期望的輸出。 – trincot

+0

@trincot我已經添加它,THX的男人.. –

回答

1

您可以使用子查詢來獲取每個項目的計數,然後加入該主表上的項目,以便您可以通過計數命令做到這一點。 下面是MSSQL,但你應該能夠在你的MySQL查詢中使用這個解決方案。

設置測試 -

DECLARE @Test TABLE 
( 
    tid int, 
    tem VARCHAR(5) 
) 

INSERT into @Test (tid, item) VALUES (1, 'k1'); 
INSERT into @Test (tid, item) VALUES (1, 'k1'); 
INSERT into @Test (tid, item) VALUES (1, 'k1'); 
INSERT into @Test (tid, item) VALUES (1, 'k2'); 
INSERT into @Test (tid, item) VALUES (1, 'k2'); 
INSERT into @Test (tid, item) VALUES (2, 'k1') 
INSERT into @Test (tid, item) VALUES (2, 'k3'); 
INSERT into @Test (tid, item) VALUES (3, 'k2'); 
INSERT into @Test (tid, item) VALUES (3, 'k1'); 
INSERT into @Test (tid, item) VALUES (3, 'k4'); 

查詢 -

SELECT t.tid,t.item 
FROM @Test t 
JOIN (SELECT t2.Item, COUNT(*) AS ItemCount FROM @Test t2 GROUP BY t2.Item) counts ON counts.Item = t.Item 
ORDER BY counts.ItemCount DESC, t.tid ASC 

輸出 -

tid item 
    1 k1 
    1 k1 
    1 k1 
    2 k1 
    3 k1 
    1 k2 
    1 k2 
    3 k2 
    2 k3 
    3 k4 
+0

這是正確的solution..OP也希望通過TID ASC下令臨時表.. – cableload

+0

我可以做我想要的輸出,而不創建臨時表? –

+0

當然,臨時表就是這個例子。使用我發佈的查詢並將您的表換出@Test。 – Tom

0

試試這個:

SELECT count(id_item), field1, field2, field3 
FROM `tes2` 
order by 0 desc