sql选择没有排序

And*_*rej 3 sql sorting

我想这是一个很长的镜头但是,有没有办法列出SQL查询而不排序...

例如.我有

select * from items 
where manufacID = 2 
or manufacID = 1
or manufacID = 4
Run Code Online (Sandbox Code Playgroud)

而且我不希望它们以asc或decs顺序列出,但是当我输入时......所以2,1,4.

那么,我能这样做吗?

Cap*_*aps 7

您可以在select中添加一个额外的列作为排序列,然后按顺序排序:

SELECT 
  *,
  CASE manufacID
    WHEN 2 THEN 1
    WHEN 1 THEN 2
    WHEN 4 THEN 3
  END AS sortOrder
FROM
  items
ORDER BY
  sortOrder
Run Code Online (Sandbox Code Playgroud)


Tho*_*s O 6

是的,使用这个:

SELECT * FROM items
WHERE manufacID IN (2, 1, 4)
ORDER BY (manufacID = 2) ASC,
         (manufacID = 1) ASC,
         (manufacID = 4) ASC
Run Code Online (Sandbox Code Playgroud)

结果按条件匹配的顺序排序.将ASC更改为DESC以反转顺序.这仅适用于允许sort子句中的条件的数据库.

(旁注:你为什么要这样做?)


Guf*_*ffa 5

由于您尚未指定排序,因此记录将按自然顺序排序,这取决于您使用的RDBMS.例如,在SQL Server中,订单未定义.

您可以从值创建一个值来订购:

select * from items 
where manufacID in (2, 1, 4)
order by case manufacID
  when 2 then 1
  when 1 then 2
  when 4 then 3
end
Run Code Online (Sandbox Code Playgroud)