sql选择没有排序

时间:2010-09-30 12:22:31

标签: sql sorting

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

例如。我有

select * from items 
where manufacID = 2 
or manufacID = 1
or manufacID = 4

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

那么,我可以这样做吗?

5 个答案:

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