显示表格中包含特定行的所有记录

时间:2014-10-02 10:09:12

标签: php mysql

我想显示表中的所有记录。恩。从学生表。 特别是第一排的学生信息。 恩。学生id = 3,然后显示其他学生信息。

So result look like 
Id  Name    City
3   PQR     xyz
1   LMN     xyz
2   ABC     xyz
4   WXY     xyz

提前致谢

3 个答案:

答案 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 */