2013-10-22 25 views
-3

我有一个表,像这样两个ID的组合:SQL特殊分组

id1 | id2 
---------- 
    1 | 10 
    1 | 20 
    1 | 30 
    1 | 40 
    1 | 50 
    2 | 11 
    2 | 12 
    5 | 13 

我需要得到的东西是这样的:ID1的

id1 | id2 
---------- 
    1 | 10 
    2 | 11 
    5 | 13 
    1 | 20 
    2 | 12 
    1 | 30 
    1 | 40 
    1 | 50 

计数和ID2在[0;无限]

我该如何用单个查询来排序(如果可能的话)?

在此先感谢。

UPD:对不起,我忘了。我需要这个MySQL。我发现row_number() exmaples,但它们不适合我。

UPD 2: 我找到了我的问题的解决方案。 如果你愿意,你可以在这里看到:http://www.sqlfiddle.com/#!2/24c88/5

UPD 3: 从PHP使用的mysql_query功能(〔实施例)运行的查询此查询必须改变: http://www.sqlfiddle.com/#!2/24c88/6 感谢大家。问题已关闭。

+7

这种排序是没有意义的了,你能解释一下为什么'2 | 12'低于'1 | 20'? –

+0

现在通过ID2订购并不重要。我的主要观点是ID1的排列顺序。 – Vitaly

回答

3
select id1,id2 from (
select row_number() over (PARTITION BY id1 order by id1) as rn 
     ,id1,id2 
     from table_name) a order by rn,id1 

这将在SQL工作....看到这个demo fiddle

+0

对不起,你还需要添加id1,顺序为..... –

+0

改变你的'ROW_NUMBER()'命令'ASC'像'ROW_NUMBER()OVER(PARTITION BY id1 ORDER BY id2 ASC)' –

+0

嗨,点击这里,它的工作亚:http://www.sqlfiddle.com/#!3/616ec/4 –

-1

尝试此查询,我刚刚从@Anto拉贾

select id1,id2 from (
select row_number() over (PARTITION BY id1 order by id1 desc) as rn 
     ,id1,id2 
     from Test) a order by rn,id1 

由于拉贾一键搞定!

,结果就像你要求的显示,看到这个图像

enter image description here

但是,我的样本图像具有第二ID名称为d2不是ID2,所以仔细检查。

不要标志着我们回答我,这是刚刚才从@Anto Raja Prakash

+0

谁投了矿?它不工作?请给我评论! –

+1

大声笑,你拿别人的回答,并复制粘贴它 –

+0

不复制粘贴,我也试过,好吧!看到不同 ?这就像一个关键。我完成了!而且我还表示他的名字在第一位! –