Sql 如何在选择查询的顶部设置已确定的记录?

Sql 如何在选择查询的顶部设置已确定的记录?,sql,select,Sql,Select,我有一张db表。 我想在选择查询运行时返回前5条记录是特定的且未排序的结果,在这5条记录下面是排序的记录 id name 1 a 2 b 3 c 4 d 我想分类如下: id name 3 c 1 a 2 b 4 d 根据您提供的样本数据和期望输出进行更新,您可以这样做 SELECT * FROM Table1 ORDER BY CA

我有一张db表。 我想在选择查询运行时返回前5条记录是特定的且未排序的结果,在这5条记录下面是排序的记录

  id    name 
   1      a
   2      b
   3      c
   4      d
我想分类如下:

  id    name
   3      c 
   1      a
   2      b
   4      d

根据您提供的样本数据和期望输出进行更新,您可以这样做

SELECT * 
  FROM Table1
 ORDER BY CASE
            WHEN id = 3 THEN 0
            WHEN id = 1 THEN 1
            WHEN id = 2 THEN 2
            WHEN id = 4 THEN 3
            ELSE 4 
          END, id
下面是演示(SQL Server
这里是演示(MySql

另一种方法是在一次选择中获取前五条记录,在第二次选择中获取所有其他记录;将用户定义的列(
n
在下面的示例中)插入到具有适当值的两个选项中(
0
1
)。然后将它们合并,并在外部先按此列选择顺序,然后根据需要应用其他排序规则

SELECT id
  FROM
(
  SELECT t.*, 0 n
    FROM Table1 t
   WHERE id IN (1,2,3,4,5)
   UNION ALL
  SELECT t.*, 1 n 
    FROM Table1 t
   WHERE id NOT IN (1,2,3,4,5)
) q
 ORDER BY q.n, CASE WHEN q.n = 1 THEN q.id END DESC
下面是演示(SQL Server
这里是演示(MySql


旁注:当您询问sql查询相关问题时,请始终提供示例数据、所需输出、当前查询、,以及有关您正在使用的RDBMS及其版本的信息。

请您重新表述您的问题,并添加一些示例数据,其中包含您所拥有的内容以及您希望返回的内容。真的吗??没有相关的代码,甚至没有你真正需要的例子。。。我们该如何帮助你。。。。我想这个问题最好的答案是。。。首先运行查询,然后,先选择特定的5,然后再对其他数据进行排序:)猜他想要的是将有序数据和无序数据+1分开,以便更好地回答问题。。