如何在 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列的值自身翻倍。使用关键字UPDATE和WHERE来实现这一点。
句法:
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。使用关键字UPDATE和WHEN来实现。此查询的行为类似于 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。
输出: