我想这是一个很长的镜头但是,有没有办法列出SQL查询而不排序...
例如.我有
select * from items
where manufacID = 2
or manufacID = 1
or manufacID = 4
Run Code Online (Sandbox Code Playgroud)
而且我不希望它们以asc或decs顺序列出,但是当我输入时......所以2,1,4.
那么,我能这样做吗?
您可以在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)
是的,使用这个:
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子句中的条件的数据库.
(旁注:你为什么要这样做?)
由于您尚未指定排序,因此记录将按自然顺序排序,这取决于您使用的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)