我剛剛在MySQL中創建了一個簡單的數據庫,並且正在學習如何編寫存儲過程。我熟悉M $ SQL而據我可以看到下面應該工作:MySQL創建存儲過程失敗,但所有內部查詢單獨成功?
use mydb;
-- --------------------------------------------------------------------------------
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER //
CREATE PROCEDURE mydb.doStats()
BEGIN
CREATE TABLE IF NOT EXISTS resultprobability (
ballNumber INT NOT NULL ,
probability FLOAT NULL,
PRIMARY KEY (ballNumber));
CREATE TABLE IF NOT EXISTS drawProbability (
drawDate DATE NOT NULL ,
ball1 INT NULL ,
ball2 INT NULL ,
ball3 INT NULL ,
ball4 INT NULL ,
ball5 INT NULL ,
ball6 INT NULL ,
ball7 INT NULL ,
score FLOAT NULL ,
PRIMARY KEY (drawDate));
TRUNCATE TABLE resultprobability;
TRUNCATE TABLE drawprobability;
INSERT INTO resultprobability (ballNumber, probability)
(select resultset.ballNumber ballNumber,(count(0)/(select count(0) from resultset)) probability
from resultset
group by resultset.ballNumber);
INSERT INTO drawProbability (drawDate, ball1, ball2, ball3, ball4, ball5, ball6, ball7, score)
(select distinct r.drawDate, a.ballnumber ball1, b.ballnumber ball2,
c.ballnumber ball3, d.ballnumber ball4, e.ballnumber ball5,
f.ballnumber ball6,g.ballnumber ball7,
((a.probability + b.probability + c.probability + d.probability + e.probability + f.probability + g.probability)/7) score
from resultset r
inner join (select r.drawDate, r.ballNumber, p.probability from resultset r inner join resultprobability p on p.ballNumber = r.ballNumber where r.appearence = 1) a on a.drawdate = r.drawDate
inner join (select r.drawDate, r.ballNumber, p.probability from resultset r inner join resultprobability p on p.ballNumber = r.ballNumber where r.appearence = 2) b on b.drawdate = r.drawDate
inner join (select r.drawDate, r.ballNumber, p.probability from resultset r inner join resultprobability p on p.ballNumber = r.ballNumber where r.appearence = 3) c on c.drawdate = r.drawDate
inner join (select r.drawDate, r.ballNumber, p.probability from resultset r inner join resultprobability p on p.ballNumber = r.ballNumber where r.appearence = 4) d on d.drawdate = r.drawDate
inner join (select r.drawDate, r.ballNumber, p.probability from resultset r inner join resultprobability p on p.ballNumber = r.ballNumber where r.appearence = 5) e on e.drawdate = r.drawDate
inner join (select r.drawDate, r.ballNumber, p.probability from resultset r inner join resultprobability p on p.ballNumber = r.ballNumber where r.appearence = 6) f on f.drawdate = r.drawDate
inner join (select r.drawDate, r.ballNumber, p.probability from resultset r inner join resultprobability p on p.ballNumber = r.ballNumber where r.appearence = 7) g on g.drawdate = r.drawDate
order by score desc);
END
//
DELIMITER ;
,而不是我得到以下
Executed successfully in 0.002 s, 0 rows affected.
Line 1, column 1
Error code 1064, SQL state 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 26
Line 6, column 1
Error code 1064, SQL state 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')) probability
from resultset
group by resultset.ballNumber);
INSERT INTO d' at line 1
Line 31, column 51
Error code 1064, SQL state 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') score
from resultset r
inner join (select r.drawDate, r.ballNumber, p.probabi' at line 1
Line 39, column 114
Execution finished after 0.002 s, 3 error(s) occurred.
我在做什麼錯?我似乎已經耗盡了我有限的心智能力!
以下有關取出插入...選擇映射,然後重新運行建議後,我收到以下錯誤
Executed successfully in 0.002 s, 0 rows affected.
Line 1, column 1
Error code 1064, SQL state 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 26
Line 6, column 1
Error code 1064, SQL state 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')) probability
from resultset
group by resultset.ballNumber);
INSERT INTO d' at line 1
Line 31, column 51
Error code 1064, SQL state 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') score
from resultset r
inner join (select r.drawDate, r.ballNumber, p.probabi' at line 1
Line 39, column 114
Execution finished after 0.002 s, 3 error(s) occurred.
你使用的是什麼版本的MySQL? 'SELECT VERSION();' – 2010-06-08 00:13:35
@Bill 5.1.47-community – Mark 2010-06-08 08:36:50