选择同一行并多次显示

时间:2018-02-12 13:14:43

标签: php mysql

我需要制作一个select,返回指定IDsarray的对象。但是如果我可以像closure中指定的那样多次返回相同的对象,那将会非常有用。即使这个对象只在database中出现一次。例如

SELECT * FROM `T` WHERE `id` IN (1, 1, 2)

我希望它返回3行 - 第一行2倍。对我来说重要的是这些结果是在闭包中指定的顺序。这可能是MYSQL吗?

2 个答案:

答案 0 :(得分:1)

你可以这样做:

SELECT * FROM T WHERE item_id = 1
UNION ALL
SELECT * FROM T WHERE item_id = 1
UNION ALL
SELECT * FROM T WHERE item_id = 2

使用union all,连接所有语句(只返回1行)

答案 1 :(得分:0)

你也可以写。

因为UNION ALL总是使用内存表来保存结果。
只定义数字时,可以使内存表保持更小。

我还假设列id是带有主键的auto_incremented列。
如果没有id列的索引,加入并不是一个好主意。

SELECT 
 T.*
FROM (
  SELECT 
   1 AS number
  FROM DUAL

  UNION ALL 

  SELECT 
   1 AS number
  FROM DUAL

  UNION ALL

  SELECT 
   2 AS number
  FROM DUAL
)
 AS numbers
INNER JOIN 
 T
ON 
 T.id = numbers.number
ORDER BY 
 numbers.number ASC