简体   繁体   English

当我添加内部连接和 where 子句时,我得到一个 sql 语法错误 1064 用于下面的存储过程

[英]Im getting an sql syntax error 1064 for the stored procedure below when I added the inner join and where clause

Im getting this syntax error 1064 near Inner join users u on u.id = ub.user_id WHERE u.active =0 AND IFNULL ' at line 2. Also what's the best way to debug a stored procedure??我在第 2 行的 u.id = ub.user_id WHERE u.active =0 AND IFNULL ' 上的 Inner join users u 附近收到此语法错误 1064。还有什么是调试存储过程的最佳方法?

Expected Output : delete data for not active users 
DELIMITER $$ 

CREATE PROCEDURE `logdb_user_breaks_delete`(

IN log_database VARCHAR(255) CHARACTER SET utf8mb4, 

IN retention_logdb INT(11) )

BEGIN SET @v = concat('DELETE FROM `',log_database ,'`.`user_breaks` ub
INNER JOIN users u on u.id = ub.user_id

WHERE u.active = 0 AND

IFNULL(ub.updated_at, ub.inserted_at) < (CONCAT(YEAR(NOW()), "-", MONTH(NOW()), "-

", "01") - INTERVAL ',retention_logdb,' MONTH);');

PREPARE stm FROM @v;

EXECUTE stm; 

DEALLOCATE PREPARE stm;

END$$ DELIMITER ;

When you join tables, you have to indicate which tables you are trying to delete.当您连接表时,您必须指出您要删除哪些表。 I'm guessing you want to delete the user_breaks rows, not the users rows.我猜你想删除 user_breaks 行,而不是 users 行。 Change DELETE FROM to DELETE ub FROM .DELETE FROM更改为DELETE ub FROM

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM