0

我有一张这样的桌子;

id1     id2
1       1
2       1
1       2
3       2
1       3
4       3
1       4
5       4

我想以一种获得行的方式选择它GROUP,但仍保留表中相应行的id2两个值。id1

所以我会得到这样的结果集;

id1     id1     id2
1       2       1
1       3       2
1       4       3
1       5       4

我在高级数据库查询方面从来没有一半好过——我将如何实现这一目标?

4

3 回答 3

2

如果id1每个不同的值恰好有 2 行(有 2 个值)id2,则可以使用:

SELECT MIN(id1) AS id1_a
     , MAX(id1) AS id1_b
     , id2
FROM tableX
GROUP BY id2 ;
于 2012-06-18T10:14:00.290 回答
1

你可以尝试使用

SELECT id2, GROUP_CONCAT(id1) FROM your_table
GROUP BY id2

这样,对于每个 id2 值,您都有一个所有 id1 值以逗号分隔的列。
看看GROUP_CONCAT 语法

于 2012-06-18T10:02:10.603 回答
1

这可能不是完美的解决方案,但在您的情况下,它应该可以工作。这是我使用的一个技巧。

select id1, (sum(id1) - id1 ) as nID1, id2 from table_name group by id2

希望它有效。乌吉瓦尔

于 2012-06-18T10:22:26.760 回答