我想显示表中的所有记录。恩。从学生表。 特别是第一排的学生信息。 恩。学生id = 3,然后显示其他学生信息。
So result look like
Id Name City
3 PQR xyz
1 LMN xyz
2 ABC xyz
4 WXY xyz
提前致谢
答案 0 :(得分:1)
select * from students
order by id <> 3,
id
或
select * from students
order by case when id = 3
then 1
else 2
end,
id
答案 1 :(得分:1)
通常最好发出两个查询来执行此操作并将结果放在应用程序中。
然而,有一些技术可行。
我考虑的两种技巧是:
<强> 1。使用联盟
SELECT * FROM students WHERE id = 3
UNION ALL
SELECT * FROM students where id <> 3;
甚至
SELECT * FROM students WHERE id = 3
UNION ALL
SELECT * FROM (SELECT * FROM students where id <> 3 order by id) x;
<强> 2。按陈述的复杂订单
SELECT * FROM students order by id = 3 desc, d;
请注意,这更容易阅读,但可以说在大型索引表上会有较低的性能,因为优化器将无法使用索引进行排序。
答案 2 :(得分:0)
我喜欢:
SELECT *
FROM student
ORDER BY id = 3 DESC, /* id = 3 returns 1 (true) or 0 (false) */
id /* This will put your other students in ASC order of id */