如何在MySQL中模拟数组变量?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

MySQL没有数组变量。我应该用什么代替?

似乎有两种备选方案:a集型标量临时表...。我所提到的问题表明了前者。但是,使用这些变量而不是数组变量是一个好的实践吗?或者,如果我使用集合,那么基于集合的成语相当于什么?foreach?

提问于
用户回答回答于

嗯,我一直在使用临时表而不是数组变量。不是最好的解决办法,但有效。

注意,您不需要正式定义它们的字段,只需使用SELECT创建它们:

CREATE TEMPORARY TABLE IF NOT EXISTS my_temp_table
SELECT first_name FROM people WHERE last_name = 'Smith';
用户回答回答于

可以在MySQL中使用WHILE循环:

SET @myArrayOfValue = '2,5,2,23,6,';

WHILE (LOCATE(',', @myArrayOfValue) > 0)
DO
    SET @value = ELT(1, @myArrayOfValue);
    SET @myArrayOfValue= SUBSTRING(@myArrayOfValue, LOCATE(',',@myArrayOfValue) + 1);

    INSERT INTO `EXEMPLE` VALUES(@value, 'hello');
END WHILE;

或者你也可以用UNION ALL:

INSERT INTO `EXEMPLE`
(
 `value`, `message`
)
(
 SELECT 2 AS `value`, 'hello' AS `message`
 UNION ALL
 SELECT 5 AS `value`, 'hello' AS `message`
 UNION ALL
 SELECT 2 AS `value`, 'hello' AS `message`
 UNION ALL
 ...
);

扫码关注云+社区