簡體   English   中英

SQL-存儲過程的結果

[英]SQL - result of Stored Procedures

我有兩個表,A和B,我有第三個表,連接A和B,我使用mariadb數據庫,我想將結果存儲在第三個表result_A_B中,但是當我運行“ CALL session_cpu_procedure() “:錯誤1136(21S01):列計數與第1行的值計數不匹配

CREATE TABLE result_A_B (
ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
cid nvarchar(100) NOT NULL, 
time datetime NOT NULL,
OS nvarchar(100) NOT NULL, 
program nvarchar(100) NOT NULL,
nb_OS_by_program FLOAT NOT NULL,
cpu FLOAT,
last_line int NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY (`cid`,`time`,`program`) ) ENGINE=InnoDB;


DELIMITER |
CREATE PROCEDURE session_cpu_procedure()
BEGIN
TRUNCATE result_session_cpu_CPLSVFX201P;
INSERT INTO result_session_cpu_CPLSVFX201P
SELECT DISTINCT C.cid,  C.time, C.OS, C.program, COUNT(*) as nb_OS_by_program, O.cpu, C.last_line 
FROM session_test C LEFT outer JOIN cpu_test O ON O.sid2 = C.cid and O.time = C.time and C.PROGRAM=O.MODULE 
where C.time
GROUP BY C.time, C.OS, C.program, C.last_line;
END |
DELIMITER ;

CALL session_cpu_procedure();

我想知道如何解決此錯誤:錯誤1136(21S01):列計數與第1行的值計數不匹配,感謝您的答復

您有一個包含8列的表。

您的SELECT... INSERT語句有7列。

這產生了相當不言自明的錯誤。

選項1:

由於您已經有一個UNIQUE鍵,因此將此鍵設為主鍵並刪除AUTO_INCREMENT列。

選項2:

INSERT SELECT明確列出有關省略auto_increment列的列:

INSERT INTO result_session_cpu_CPLSVFX201P
  (cid, time, OS, program, nb_OS_by_program, CPU, lastline)
SELECT ....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM