Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一种方法可以包含MySQL查询中的重复项:选择..从..何处..在(列表中)_Mysql_Sql_Duplicates - Fatal编程技术网

是否有一种方法可以包含MySQL查询中的重复项:选择..从..何处..在(列表中)

是否有一种方法可以包含MySQL查询中的重复项:选择..从..何处..在(列表中),mysql,sql,duplicates,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) 我希望得到与列表相同的结果,包括:重复项。上面的查询保留顺序,但删除重复项。我知道我可以对结果进行后期处理,但只是想知道是否有更简单的方法 谢谢您如何构建查询?如果您不反对做一些手工工作(稍后可以用一些代码进行包装),工会应该满足您的需要: select id from table where id in (1,

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

SELECT * FROM table WHERE id IN(2,4,6,1,1,2) ORDER BY field (id,2,4,6,1,1,2)
我希望得到与列表相同的结果,包括:重复项。上面的查询保留顺序,但删除重复项。我知道我可以对结果进行后期处理,但只是想知道是否有更简单的方法


谢谢

您如何构建查询?如果您不反对做一些手工工作(稍后可以用一些代码进行包装),工会应该满足您的需要:

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

编辑:实际上,我认为这对您的订购没有帮助。让我再玩一玩。

这将真正实现您想要的:

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

我不明白你的问题。order by看起来很可疑,当你从某个带有in子句的地方选择时,你不应该“删掉”重复项——你应该把它们都拿到手。order by很好而且有效。mysql应该也确实删除了DUP——试试看。我也不清楚在in子句中重复ID 1的目的。是否希望查询返回该行两次?如果保留重复项是指在结果集中生成行,则IN()子句不会生成该行。在您的示例中,无论您将1添加到In()集中多少次,都只会返回一个id=1的行。@Prateek:这不会像您预期的那样发生。匹配id=1的行将只返回一次,无论in子句中的值1重复了多少次。请记住in子句只不过是id=2或id=4或id=6或id=1或id=1或id=2的缩写。这是一个很好的解决方法。。但是,我想我会对结果进行后处理。您必须将列表分解为uniq子列表,并将每个子列表传递给每个联合的order by字段(id,子列表)。(我假设联合体中的每个select语句都可以按顺序执行)。。但是正如我所说的,我现在就不想管MySQL了:)是的,我对它做了一些尝试,但是订购几乎是不可能的。