mysql - SQL - If 语句看似忽略 'AND'

标签 mysql sql if-statement

我创建了以下存储过程,创建新员工时将调用该存储过程。 只要雇员不存在于雇员表中,插入就应该成功。

为了检查这一点,我决定检查 FirstName、LastName 和 DateOfBirth。如果一行包含所有这些列的 3 路匹配,则插入应该失败。

我看到的是 If 语句将我的 AND 视为 OR。 如果出现一个匹配项,则插入失败。

经过一番搜索后,我看不出我的 If 结构有什么问题。 任何帮助将不胜感激。

            Create Procedure CreateEmployee
            (
            @Role_ID Int,
            @FirstName Varchar(50),
            @LastName Varchar(50),
            @DateOfBirth Varchar(50),
            @Active Bit
            )
            As
            Begin

            If Not Exists (Select FirstName From Employee Where FirstName = @FirstName)
                AND Not Exists (Select LastName From Employee Where LastName = @LastName)
                AND Not Exists (Select DateOfBirth From Employee Where DateOfBirth = @DateOfBirth)

                Begin
                Insert Into Employee (Role_ID, FirstName, LastName, DateOfBirth, Active)
                Values (@Role_ID, @FirstName, @LastName, @DateOfBirth, @Active)
                End

            Else
                Begin
                Select 'User already exists!'
                End

            End

最佳答案

为什么您不只为支票运行 1 个查询?

If Not Exists (Select 1 From Employee 
               Where FirstName = @FirstName 
                     and LastName = @LastName 
                     and DateOfBirth = @DateOfBirth)
    begin
        ...

关于mysql - SQL - If 语句看似忽略 'AND',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14809432/

相关文章:

mysql - 如何限制mysql用户使用mysqldump

c++ - 在 if 语句中处理多个或的更优雅的方法是什么

mysql - MySQL 的先验等价物连接

php - 虽然循环似乎无穷无尽

javascript - 如何在 JavaScript 的 IF 语句中使用具有 boolean 值的变量作为条件?

php - 自动生成子页面

mysql - 找到支付最高薪水的部门

mysql - 测试登录系统是否被sql注入(inject)保护

mysql - 查询以选择自上次成功以来的所有行

sql - Mysql多对多查询