在MySQL存储过程中需要帮助

时间:2012-03-25 20:37:02

标签: mysql database stored-procedures

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 ;

1 个答案:

答案 0 :(得分:0)

您的删除查询应为 -

DELETE Users
FROM Users
LEFT JOIN temp_Users
    ON temp_Users.Ext=Users.Ext
WHERE temp_Users.Ext IS NULL;