我有一个名为 mytable 的表格,其中包含这些结果
ID | name
----------
1 | one
2 | two
3 | three
4 | four
5 | five
我需要这个结果
ID | name
----------
3 | three
1 | one
2 | two
4 | four
5 | five
记录'3,三'必须在第一行,然后在该记录之后显示其他。谢谢你 ;
尝试这个:
select ID, NAME from
(select *, -1 as rnum from tb where id=3
union all
select *, ID as rnum from tb where id!=3 ) tb1
ORDER BY rnum ASC
select * from mytable s where s.id=3
union all
select * from (
select t.id,t.name from mytable t where t.id!=3
order by t.id) as q;
尝试这个。它应该在 PostgreSQL、MySQL 和 SQLServer 中工作
SELECT ID, Name
FROM (
SELECT 1 AS ID, 'one' as NAME
UNION SELECT 2 , 'two'
UNION SELECT 3 , 'three'
UNION SELECT 4 , 'four'
UNION SELECT 5 , 'five'
) AS MyDataSet
ORDER BY CASE WHEN ID = 3 THEN 0 ELSE 1 END
使用标准 SQL,您可以简单地根据您想要的第一行的值进行排序(该特定行的返回值低于所有其他行的值),然后是 ID。
SELECT * FROM mytable
ORDER BY CASE WHEN name='three' THEN 0 ELSE 1 END, ID