SQL输出插入的新数据的id或如果没有插入重复则输出id

标签 sql sql-server

我有一个简单的表格,包含以下内容

TABLE Color(
    Color_id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
    Coloring_type [varchar](20) NULL,
    ColorA int NOT NULL,
    ColorB int NULL,
    ColorC int NULL)

我想执行以下查询以插入一些数据并返回 Inserted Color_id 以在 C# 中执行一些操作

INSERT INTO Color OUTPUT INSERTED.Color_id
VALUES ('solid' ,'red' ,'green' ,'blue')

无论如何,事实上,这样的插入可能会在再次插入相同的值时使数据重复,所以我想进行一个查询,如果它是新的则插入数据并输出插入的id或输出相同的id如果数据已经插入到表中,我应该对查询进行哪些更改?

最佳答案

你可以试试下面的,

IF EXISTS (SELECT Color_id  
           FROM Color 
           WHERE Coloring_type = 'solid' AND ColorA = 'red' AND
                 ColorB = 'green' AND ColorC = 'blue')
    BEGIN
        SELECT Color_id  
        FROM Color 
        WHERE Coloring_type = 'solid' AND ColorA = 'red' AND
              ColorB = 'green' AND ColorC = 'blue'
    END
ELSE
    BEGIN
        INSERT INTO Color OUTPUT INSERTED.Color_id
        VALUES ('solid' ,'red' ,'green' ,'blue')

        SELECT SCOPE_IDENTITY() --THIL WILL RETURN THE NEWLY ADDED Color_id
    END

关于SQL输出插入的新数据的id或如果没有插入重复则输出id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24531653/

相关文章:

sql-server - 如何在SQL Server中使用Create语句创建临时表?

mysql - 如何在另一个表列中没有匹配项的情况下选择一个表列的 COUNT

html - vs Α 在浏览器和源代码中显示

PHP:使用 count() 获取 1 而不是 0

sql - 如何以独占方式锁定阻止 CRUD 操作的行

sql - ntext 数据类型不能选择为 DISTINCT,因为它不具有可比性

sql - Rails 表查询的 "missing FROM-clause entry for table"错误

sql - SQL中的乘法聚合运算符

sql - 以 SQL Server 最快的方式插入/更新 5000 万条记录

sql-server - 2014 SQL Server 连接到本地网络上的不同 PC。 VBA