2015-04-07 58 views
0

有一個表有兩列說ID和名稱,我希望這兩列進行排序。我的sql查詢找到排序兩列獨立

 
table : 
id name 
3 y 
2 z 
1 x 

output should be 
id name 
1 x 
2 y 
3 z 

任何人都可以在單一的sql查詢?

+0

這是奇怪的,名字'y'不屬於ID'2',你想排序後都沒有了。這不是所謂的排序而是更新記錄。 –

+0

好吧,記錄不必更新。它只是暫時被打破。這絕對是古怪的壽。 –

回答

0
Select * 
, row_number() over (order by ID) as IDRow 
, row_number() over (order by name) as NameRow 
into #temp 
from table 

select a.ID, b.Name from #temp a 
full outer join #temp b 
on a.IDRow = b.NameRow 
order by IDRow, NameRow 

如果你願意,你可以使用子查詢,而不是臨時表做到這一點,但它可能會這樣快。

+1

這不是mysql –

+0

對不起,你是對的。 SQLSERVER。我迷路了...... :) – APH

1

你需要做些奇怪的事情。因爲你想做的事很奇怪。

select b1.id, b2.name from 
(
    select @row := @row +1 as row, id 
    from broken, (select @row := 0) rr 
    order by id asc 
) b1 
inner join 
(
    select @row2 := @row2 + 1 as row, name 
    from broken, (select @row2 := 0) rr 
    order by name asc 
) b2 
on b1.row = b2.row 

演示小提琴:http://sqlfiddle.com/#!9/4d47c/7

+0

Y怪,很好放! (+1)^^ – Levit

+1

我幾乎覺得這是一個思考的練習,而不是別人真正需要做的事情 –