2016-03-02 90 views
1
獲取ID的列表中爲每個組組

讓我們假設我有一個SQLite表如下所示:通過聲明的SQLite

CREATE TABLE my_table (
    id INTEGER PRIMARY KEY, 
    field1 INTEGER, 
    field2 INTEGER 
); 

INSERT INTO my_table (field1, field2) VALUES 
    (1, 2), 
    (2, 1), 
    (2, 1), 
    (3, 1), 
    (1, 2), 
    (2, 1); 

它看起來像:

1|1|2 
2|2|1 
3|2|1 
4|3|1 
5|1|2 
6|2|1 

對於每一組的不同值的組大小大於1,我想要一組相應的ID。對於上述這將是:1,52,3,6

如果我運行

SELECT id FROM my_table 
GROUP BY 
    field1, field2 
HAVING count(*) > 1; 

只返回最後爲每個組,即56。我可以返回全部每個組的ID嗎?

回答

1

沒有聚合功能,你可以得到任何值。 SQLite is similiar to MySQL in that matter。在標準的SQL中,你必須選擇聚合函數,否則你會得到錯誤。

爲了讓你可以使用GROUP_CONCAT所有值:

SELECT field1, field2, GROUP_CONCAT(id, ',') AS ids 
FROM my_table 
GROUP BY field1, field2 
HAVING COUNT(*) > 1; 

SqlFiddleDemo

輸出:

​​

如果你想ids只能從選擇列列表中刪除field1,field2

SELECT GROUP_CONCAT(id, ',') AS ids 
FROM my_table 
GROUP BY field1, field2 
HAVING COUNT(*) > 1 

SqlFiddleDemo2

+1

不錯!謝謝。 –