在 SQL 语句中使用 'If Exists' 两次
Posted
技术标签:
【中文标题】在 SQL 语句中使用 \'If Exists\' 两次【英文标题】:Use 'If Exists' twice inside SQL Statement在 SQL 语句中使用 'If Exists' 两次 【发布时间】:2018-06-21 17:09:53 【问题描述】:我正在尝试创建一个不存在的用户。我听起来很容易,但我需要控制是否存在其他东西。所以我使用了两次'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
我正在检查我的 usernameID
。我需要为此办理手续吗?
【问题讨论】:
您需要两个命令 - 一个用于用户,一个用于用户/国家组合。 有没有办法把所有东西都放在一个 SQL 语句中? 创建一个你所拥有的简单架构。您正在使用哪个版本的 MySQL?您也许可以使用 upsert-ish 语法来完成您所需要的。 我正在使用 Microsoft SQL Server Management Studio 2017。最新和最新版本。 您在帖子中标记了 MySQL,但您说您使用的是 Microsoft SQL Server 客户端。您使用的是 MySQL 还是 Microsoft SQL Server? 【参考方案1】:我搜索了一些解决方案,但最好的是使用PROCEDURE
。
您可以在PROCEDURE
中创建多个IF EXISTS
。
创建新用户后,我还能够保存我的 ID。
【讨论】:
【参考方案2】:在 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”插入表中。
【讨论】:
以上是关于在 SQL 语句中使用 'If Exists' 两次的主要内容,如果未能解决你的问题,请参考以下文章
Sql语句优化-查询两表不同行NOT INNOT EXISTS连接查询Left Join
sql的语句提示有语法错误,求大神 create database if not exists `fwzl`;
SQL 语句“CREATE EXTENSION[*] IF NOT EXISTS UUID_OSSP”中的语法错误
使用 if exists 使用合并 oracle sql 逻辑插入或更新
2022-11-21:第N高的薪水。表结构和数据的sql语句如下。请问sql语句如何写? DROP TABLE IF EXISTS employee; CREATE TABLE employee (