我想这是一个很长的镜头但是,有没有办法列出sql查询而不进行排序......
例如。我有
select * from items
where manufacID = 2
or manufacID = 1
or manufacID = 4
并且我不希望它们以asc或decs顺序列出,但是当我输入时......所以2,1,4。
那么,我可以这样做吗?
答案 0 :(得分: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
答案 1 :(得分:6)
是的,请使用:
SELECT * FROM items
WHERE manufacID IN (2, 1, 4)
ORDER BY (manufacID = 2) ASC,
(manufacID = 1) ASC,
(manufacID = 4) ASC
结果按条件匹配的顺序排序。将ASC更改为DESC以反转顺序。这仅适用于允许sort子句中的条件的数据库。
(旁注:你为什么要这样做?)
答案 2 :(得分: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
答案 3 :(得分:1)
SELECT * FROM
(
select 1 as sort, * from items
where manufacID = 2
union all
select 2 as sort, * from items
where manufacID = 1
union all
select 3 as sort, * from items
where manufacID = 4
)
order by sort
答案 4 :(得分:0)
select * from items where manufacID = 2
union all
select * from items where manufacID = 1
union all
select * from items where manufacID = 4