SELECT 常量数组

Dan*_*lay 7 mysql

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

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

所需的输出是:

+-----+
| ID  |
+-----+
| 1   |
| 2   |
| 3   |
Run Code Online (Sandbox Code Playgroud)

Kic*_*art 5

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

SELECT 1 AS ID UNION SELECT 2 UNION SELECT 3
Run Code Online (Sandbox Code Playgroud)

对于少量数据,这很有效。不利的一面是没有索引来检查这些。

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

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

SELECT ID 
FROM all_poss_values
WHERE ID IN (1,2,3)
Run Code Online (Sandbox Code Playgroud)

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

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)
Run Code Online (Sandbox Code Playgroud)