[英]Im getting an sql syntax error 1064 for the stored procedure below when I added the inner join and where clause
我在第 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 ;
當您連接表時,您必須指出您要刪除哪些表。 我猜你想刪除 user_breaks 行,而不是 users 行。 將DELETE FROM
更改為DELETE ub FROM
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.