在常量数组上进行SELECT

时间:2014-09-12 09:09:36

标签: mysql

在MySQL中,如何对常量值数组执行SELECT?类似的东西:

  

SELECT ['1','2','3'] AS ID;

所需输出为:

+-----+
| ID  |
+-----+
| 1   |
| 2   |
| 3   |

1 个答案:

答案 0 :(得分:2)

您可以使用联接生成一系列行。

SELECT 1 AS ID UNION SELECT 2 UNION SELECT 3

对于少量数据,这很有效。缺点是没有索引来检查这些。

临时表可能要好得多,因为至少任何加入这些值的SQL都可以使用索引。

如果值来自有限池,则另一种可能性是只有一个包含所有可能值的表并从中进行选择: -

SELECT ID 
FROM all_poss_values
WHERE ID IN (1,2,3)

或使用生成的值范围(再次失去索引的可用性): -

SELECT 1 + units.i + tens.i * 10 AS ID
FROM (SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) units,
(SELECT 0 AS i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) tens
WHERE 1 + units.i + tens.i * 10 IN (1,2,3)