mysql - MySql程序,重复50次,生成随机值,检查是否存在
问题描述
我正在尝试在 mysql 中执行存储过程,但我经常遇到语法错误。将不胜感激任何帮助。谢谢你。代码在这里:
BEGIN
/* loop to get 50 locations,
while loop to check if generated location is already in db
if in DB, generate again, else move on*/
SET @i = 0;
REPEAT
BEGIN
DECLARE RandomDesertCount INT DEFAULT 1;
DECLARE RandomDesertX INT;
DECLARE RandomDesertY INT;
DECLARE RandomJungleCount INT DEFAULT 1;
DECLARE RandomJungleX INT;
DECLARE RandomJungleY INT;
WHILE RandomDesertCount > 0 DO
SET RandomDesertX = RAND() * (200) - 100;
SET RandomDesertY = RAND() * (200) - 100;
SET RandomDesertCount = SELECT COUNT(*) FROM locations where x = RandomDesertX AND y = RandomDesertY;
END WHILE;
WHILE RandomJungleCount > 0 DO
SET RandomJungleX = RAND() * (200) - 100;
SET RandomJungleY = RAND() * (200) - 100;
SET RandomJungleCount = SELECT COUNT(*) FROM locations where x = RandomJungleX AND y = RandomJungleY;
END WHILE;
INSERT INTO locations (x, y, type) VALUES (RandomDesertX, RandomDesertY, 'DESERT');
INSERT INTO locations (x, y, type) VALUES (RandomJungleX, RandomJungleY, 'JUNGLE');
END;
UNTIL @i = 49
END REPEAT;
END; ```
解决方案
Set = select ... 无效 将 select 括在括号中
设置=(选择...)如
SET RandomDesertCount = (SELECT COUNT(*) FROM locations where x = RandomDesertX AND y = RandomDesertY);
SET RandomJungleCount = (SELECT COUNT(*) FROM locations where x = RandomJungleX AND y = RandomJungleY);
推荐阅读
- sql - 如何使用 SQL 将多行中的一种情况的值合并到一行中?
- django - 如何使用 graphene-django 从实现中生成 GraphQL SDL?
- sql - ADO 无法识别旧式 SQL 连接。不知道如何在此特定查询中使用新式语法
- android - 应用关闭时如何打开通知[Flutter][OneSignal]
- hive - 如何使用 json_tuple 解析 JSON 对象中不知道键名的所有元素?(蜂巢)
- javascript - 在 Godaddy 网站中嵌入游戏(getcontext 错误)
- python - 如何从 PySpark Dataframe 中删除重复项并将剩余列值更改为 null
- c++ - clang-tidy 隔离多个字段声明
- angular - Angular 组件中的循环依赖
- python - TypeError: unhashable type: 'numpy.ndarray' - 执行查询时如何修复此错误()