在SQL语句中两次使用“如果存在”

时间:2018-06-21 17:09:53

标签: sql-server sql-insert exists

我正在尝试创建一个不存在的用户。听起来很简单,但我需要控制是否存在其他东西。所以我使用了两次“ IF EXISTS”。这是我的代码:

IF NOT EXISTS (SELECT userID 
               FROM UserTable 
               WHERE usernameID = (IF NOT EXISTS(SELECT usernameID 
                                                 FROM UsernameTable 
                                                 WHERE name = 'Martijn')
                                   BEGIN
                                       INSERT INTO  UsernameTable(name) 
                                       VALUES ('Martijn');
                                   END

                                   SELECT usernameID 
                                   FROM UsernameTable 
                                   WHERE name = 'Martijn';)
                   AND country = 'Netherlands')
BEGIN
    INSERT INTO  UserTable(usernameID, country) 
    VALUES (1, 'Netherlands');
END

我该如何解决?因为MySQL不喜欢我正在检查IF EXISTS的{​​{1}}。我需要一个程序吗?

2 个答案:

答案 0 :(得分:0)

我搜索了一些解决方案,但最好的方法是使用PROCEDURE。 您可以在IF EXISTS内创建多个PROCEDURE。 创建新用户后,我还可以保存我的ID。

答案 1 :(得分:0)

在SQL Server中,您应该可以执行以下操作:

IF NOT EXISTS (SELECT userID FROM UserTable WHERE name = 'Martijn')
BEGIN
    INSERT INTO  UsernameTable(name, country)
        VALUES ('Martijn', 'Netherlands');
END;

这是尝试了解您的SQL代码。如果不存在“ Martijn”,请在表中插入“ Martijn”。