为IN语句中的每个键选择行,即使它们相等

时间:2013-05-18 19:30:48

标签: sql node-mysql

我的问题的例子如下:
我有一个id的数组

[ 6230, 206, 4259, 24761, 26736, 219, 281, 281, 516, 495, 10371 ]

我想将SELECT查询设置为我的database.table,如:

SELECT * FROM `database`.`table` WHERE `id` IN (6230, 206, 4259, 24761, 26736, 219, 281, 281, 516, 495, 10371);

正如你所看到的,我有2个相同的id,所以在查询结果中我只有10行。
但我希望为数组中的每个id获取一行。正如我猜测的那样,“IN()”声明并不具备。
我能否就如何解决这个问题做出任何假设。
注意:我无法对数组的每个元素执行不同的查询。

1 个答案:

答案 0 :(得分:2)

为每个id创建一个包含一条记录的集合,然后加入:

select t.* from database.table as t inner join (
  select 6230 as id union all
  select 206 union all
  select 4259 union all
  select 24761 union all
  select 26736 union all
  select 219 union all
  select 281 union all
  select 281 union all
  select 516 union all
  select 495 union all
  select 10371
) as x on x.id = t.id