Iam在存储过程中非常新,无需检查查询工作,但任何更好的代码都会非常明显。
我有两个表
1.Users ===&gt;主记录表<登记/> 2.temp_Users ===&GT;表包含更新的当前用户信息
我的所需任务是:A。检查需要删除的用户。
B.添加不在表中的新用户用户表 temp_Users
DELIMITER //
CREATE PROCEDURE checkUsers()
BEGIN
DECLARE oldusers, newusers INT DEFAULT 0
//To catch delete users
SELECT COUNT(Users.Ext) INTO oldusers
FROM Users
LEFT JOIN temp_Users
ON temp_Users.Ext=Users.Ext
WHERE temp_Users.Ext IS NULL;
//To catch new users
SELECT COUNT(temp_Users.Ext) INTO newusers
FROM Users
RIGHT JOIN temp_Users
ON temp_Users.Ext=Users.Ext
WHERE Users.Ext IS NULL;
CASE
WHEN oldusers>0
THEN DELETE FROM Users SELECT Users.Ext
FROM Users
LEFT JOIN temp_Users
ON temp_Users.Ext=Users.Ext
WHERE temp_Users.Ext IS NULL;
WHEN newusers>0
THEN INSERT INTO Users (Ext) SELECT temp_Users.Ext
FROM Users
RIGHT JOIN temp_Users
ON temp_Users.Ext=Users.Ext
WHERE Users.Ext IS NULL;
ELSE exit;
END CASE;
END //
DELIMITER ;
答案 0 :(得分:0)
您的删除查询应为 -
DELETE Users
FROM Users
LEFT JOIN temp_Users
ON temp_Users.Ext=Users.Ext
WHERE temp_Users.Ext IS NULL;