有没有办法在MySQL查询中包含重复项:select..from..where..id in(list)

时间:2011-01-21 18:40:37

标签: mysql sql duplicates

我正在尝试获取查询类型的结果

SELECT * FROM table WHERE id IN(2,4,6,1,1,2) ORDER BY field (id,2,4,6,1,1,2)

我想以与列表相同的顺序获得结果,包括:重复项。上面的查询保留了订单但删除了重复。我知道我可以对结果进行后期处理,但只是想知道是否有更简单的方法。

由于

2 个答案:

答案 0 :(得分:4)

这实际上会达到你想要的效果:

SELECT * FROM table
inner join (
   select 1 as sort, 2 as value union all
   select 2, 4 union all
   select 3, 6 union all
   select 4, 1 union all
   select 5, 1 union all
   select 6, 2) X on X.value=table.id
ORDER BY X.sort

答案 1 :(得分:0)

您是如何构建查询的?如果你不反对做一些小的手工工作(以后你可以用一些代码包装),工会应该得到你所需要的:

select id from table where id in (1, 2, 4, 6)
union all
select id from table where id in (6, 8);

返回:

------
| id |
|====|
| 1  |
| 2  |
| 4  |
| 6  |
| 6  |
| 8  |
------

编辑:实际上,我认为这不会对您的订购有所帮助。让我再玩这个了。