在MySQL中,如何对常量值数组执行SELECT
?类似的东西:
SELECT ['1','2','3'] AS ID;
所需输出为:
+-----+
| ID |
+-----+
| 1 |
| 2 |
| 3 |
答案 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)