mysql - MySql 数据库卡在指令 ORDER BY RAND
问题描述
所以我有一个大学项目,我必须在 MySql 中创建一个关于管理足球比赛的数据库,我有这个程序来填写一个完整的赛季,但是当我调用它时它崩溃了一半。我真的不知道怎么可能。我什至把它发给了我的一个朋友,他的电脑更好,崩溃率变得更糟。如果您想仔细查看,代码段粘贴在下面。链接是如果你想测试整个事情。在此先感谢,很抱歉参数是葡萄牙语。提前致谢。链接:https ://codeshare.io/5zbb4W
DROP PROCEDURE IF EXISTS create_jornada_primeira_volta;
DELIMITER @
CREATE PROCEDURE create_jornada_primeira_volta()
BEGIN
DECLARE xepoca, xcompeticao, xepoca2, xjornada, cnt, njogos INT;
SELECT cod_epoca, cod_competicao INTO xepoca, xcompeticao FROM Epoca GROUP BY cod_epoca DESC LIMIT 1;
SELECT num_jornada, cod_epoca INTO xjornada, xepoca2 FROM Jornada GROUP BY cod_epoca DESC LIMIT 1;
IF (xepoca != xepoca2 OR xjornada IS NULL) THEN
SET xjornada = 1;
ELSE
SET xjornada = xjornada + 1;
END IF;
SELECT num_equipas(xcompeticao)/2 INTO njogos;
SET cnt = 0;
INSERT INTO Jornada VALUES (xjornada, xepoca, xcompeticao);
WHILE (cnt != njogos) DO
CALL create_jogo_primeira_volta;
SET cnt = cnt + 1;
END WHILE;
END;
@
DELIMITER ;
DROP PROCEDURE IF EXISTS create_jornada_segunda_volta;
DELIMITER @
CREATE PROCEDURE create_jornada_segunda_volta()
BEGIN
DECLARE xepoca, xcompeticao, xjornada, cnt, njogos, xequipa_visitada, xequipa_visitante, xinfraestrutura, xequipa_arbitragem INT;
SELECT cod_epoca, cod_competicao INTO xepoca, xcompeticao FROM Epoca GROUP BY cod_epoca DESC LIMIT 1;
SELECT num_jornada INTO xjornada FROM Jornada GROUP BY num_jornada DESC LIMIT 1;
SET xjornada = xjornada + 1;
SELECT num_equipas(xcompeticao)/2 INTO njogos;
SET cnt = 0;
INSERT INTO Jornada VALUES (xjornada, xepoca, xcompeticao);
WHILE (cnt != njogos) DO
SELECT cod_visitado, cod_visitante
INTO xequipa_visitante, xequipa_visitada
FROM Jogo
Where num_jornada = xjornada - (num_equipas(xcompeticao) * 2 - 2) / 2 AND cod_epoca = xepoca
ORDER BY cod_equipa_arbitragem
LIMIT cnt,1;
CALL create_equipa_arbitragem;
SELECT cod_equipa_arbitragem INTO xequipa_arbitragem FROM Equipa_arbitragem GROUP BY cod_equipa_arbitragem DESC LIMIT 1;
SELECT cod_infraestrutura INTO xinfraestrutura FROM Infraestrutura WHERE tipo = 'Estadio' AND cod_clube = (SELECT cod_clube FROM Equipa WHERE cod_equipa = xequipa_visitada);
INSERT INTO Jogo VALUES (xepoca, xcompeticao, xjornada, xequipa_visitada, xequipa_visitante, xequipa_arbitragem, xinfraestrutura, null, null);
SET cnt = cnt + 1;
END WHILE;
END;
@
DELIMITER ;
DROP PROCEDURE IF EXISTS create_epoca;
DELIMITER @
CREATE PROCEDURE create_epoca()
BEGIN
DECLARE ncompeticoes, cnt_comp, cnt_jornadas, nepoca, njornadas INT;
SELECT COUNT(*) INTO ncompeticoes FROM Competicao;
SET cnt_comp = 1;
SELECT cod_epoca INTO nepoca FROM Epoca GROUP BY cod_epoca DESC LIMIT 1;
IF nepoca IS NULL THEN
SET nepoca = 1;
ELSE
SET nepoca = nepoca + 1;
END IF;
WHILE (cnt_comp != (ncompeticoes + 1)) DO
INSERT INTO Epoca VALUES (nepoca, cnt_comp, 2017, CURDATE(), null, null);
SELECT ((num_equipas(cnt_comp) * 2 - 2) / 2) INTO njornadas;
SET cnt_jornadas = 0;
WHILE (cnt_jornadas < njornadas) DO
CALL create_jornada_primeira_volta;
SET cnt_jornadas = cnt_jornadas + 1;
END WHILE;
SET cnt_jornadas = 0;
WHILE (cnt_jornadas != njornadas) DO
CALL create_jornada_segunda_volta;
SET cnt_jornadas = cnt_jornadas + 1;
END WHILE;
SET cnt_comp = cnt_comp + 1;
END WHILE;
END;
@
DELIMITER ;
解决方案
推荐阅读
- c# - 英雄联盟直播 API 使用
- linux - 链接有效,但 ldd 不显示链接库并且运行时失败
- java - 清单文件没有被添加?
- puppeteer - 傀儡师。waitForNavigation 在等什么?
- spring-boot - Activiti 框架:resultVariableName 奇怪的行为
- excel - 如何按特定范围拆分长行并将其添加为新行 - Excel
- python - Matlab 等价于 Python 的“+=”运算符用于数独问题
- java - Serenity Headless Chrome 偶尔崩溃,而 Non-headless Chrome 从不崩溃
- javascript - 使用 redux 中的钩子调度操作时写入依赖数组的正确方法
- python - 绘图上的 GUI 按钮,用于选择绘图点并存储在不同的数组中