📜  如何在 SQL Server 中使用一个查询更新多条记录?

📅  最后修改于: 2022-05-13 01:54:49.019000             🧑  作者: Mango

如何在 SQL Server 中使用一个查询更新多条记录?

在 SQL 中,有时我们需要在一个查询中更新多条记录。我们将使用 UPDATE 关键字来实现这一点。为此,我们使用了两种示例,即第一种仅基于一个条件,第二种基于多个条件。对于本文,我们将使用 Microsoft SQL Server 作为我们的数据库和 Select 关键字。

第 1 步:创建数据库。为此,请使用以下命令创建一个名为 GeeksForGeeks 的数据库。

询问:

CREATE DATABASE GeeksForGeeks

输出:

第 2 步:使用 GeeksForGeeks 数据库。为此,请使用以下命令。

询问:

USE GeeksForGeeks

输出:

第 3 步:在 GeeksForGeeks 数据库中创建一个 BANDS 表。该表有 3 列,即 BAND_NAME、PERFORMING_COST 和 NUMBER_OF_MEMBERS,包含名称、表演费用和乐队成员的数量。

询问:

CREATE TABLE BANDS(
BAND_NAME VARCHAR(20),
PERFORMING_COST INT,
NUMBER_OF_MEMBERS INT);

输出:

第 4 步:描述表 BANDS 的结构。

询问:

EXEC SP_COLUMNS BANDS;

输出:

第 5 步:在 BANDS 表中插入 5 行。

询问:

INSERT INTO BANDS VALUES('INDIAN OCEAN',10000,5);
INSERT INTO BANDS VALUES('BTS',20000,6);
INSERT INTO BANDS VALUES('METALLICA',30000,10);
INSERT INTO BANDS VALUES('BEATLES',40000,4);
INSERT INTO BANDS VALUES('EAGLES',50000,4);

输出:

步骤 6:显示 BANDS 表的所有行。

询问:

SELECT * FROM BANDS;

输出:

步骤 7:更新表BANDS的所有记录,只满足一个条件。这里的条件是NUMBER_OF_MEMBERS列的值应小于 5。如果满足条件,则PERFORMING_COST列的值自身翻倍。使用关键字UPDATEWHERE来实现这一点。

句法:

UPDATE TABLE_NAME SET COLUMN_NAME
= VALUE WHERE CONDITION;

询问:

UPDATE BANDS SET PERFORMING_COST = 
2*PERFORMING_COST WHERE NUMBER_OF_MEMBERS<=5;

输出:

第 8 步:显示更新后的 FIRM 表的所有行。

询问:

SELECT * FROM BANDS;

注意:对于NUMBER_OF_MEMBERS <=5 的频段, PERFORMING_COST已翻倍。

输出:

步骤 9:更新满足两个(多个)条件的表BANDS的所有记录。这里的条件是如果BAND_NAME是 'METALLICA',那么它的PERFORMING_COST设置为 90000,如果BAND_NAME是 'BTS',那么它的PERFORMING_COST设置为 200000。使用关键字UPDATEWHEN来实现。此查询的行为类似于 if-else if-else 块。

句法:

UPDATE TABLE_NAME
SET COLUMN_VALUE 
= CASE COLUMN_NAME
WHEN 'COLUMN_NAME1' THEN COLUMN_VALUE1
WHEN 'COLUMN_NAME2' THEN COLUMN_VALUE2
ELSE COLUMN_VALUE
END
WHERE BAND_NAME IN('COLUMN_NAME1', 'COLUMN_NAME2');

询问:

UPDATE BANDS
SET PERFORMING_COST 
= CASE BAND_NAME
WHEN 'METALLICA' THEN 90000
WHEN 'BTS' THEN 200000
ELSE PERFORMING_COST
END
WHERE BAND_NAME IN('METALLICA', 'BTS');

输出:

第 10 步:显示更新后的 FIRM 表的所有行。

询问:

SELECT * FROM BANDS;

注意: METALLICA 和 BTS 的PERFORMING_COST已分别更新为 90000 和 200000。

输出: