我的sql查询查找独立排序两列



有一个表有两列,比如id和name,我希望这两列都排序。

表:id名称3年2 z1个输出应该是id名称1个2年3 z

有人能在单个sql查询中做到这一点吗???

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

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

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

如果您愿意,您可以使用子查询而不是临时表来实现这一点,但这样可能会更快。

最新更新