【问题标题】:INSERT INTO specific ROW - Insert into specific columns of a specific row?INSERT INTO specific ROW - 插入特定行的特定列?
【发布时间】:2013-03-16 08:38:52
【问题描述】:

我使用的是 SQL Server 2008。我有一个表,其中每行的前三列保持固定,而其他列发生变化。 R = 行,C = 列。

   C1   C2   C3   C4   C5....
R1:a    b    x    h    l 
R2:p    d    b    r    v 
R3:y    h    d    b    m
.....

C1、C2 和 C3 列中的数据永远不会改变。但有时需要更改 C4、C5 中的数据。

为特定行仅更新 cols C4、C5 等的 SQL 查询是什么?

【问题讨论】:

    标签: sql sql-server sql-server-2008 sql-update


    【解决方案1】:

    既然您提到c1c2c3 是不可更改的,那么将其作为搜索特定记录的基础,

    UPDATE  tableName
    SET     c4 = 'newVal',
            c5 = 'newvla2'
    WHERE   c1 = 'val1' AND
            c2 = 'val2' AND
            c3 = 'val3'
    

    【讨论】:

    • 难道我们没有这样的东西 - INSERT INTO (DESIRED COLUMN NAMES) VALUES (SOME VALUES) WHERE C1 = 'val1', C2 = 'val2' 吗?
    • INSERT 语句不能有WHERE 子句除非您正在执行INSERT INTO...SELECT,它可以有where 子句。您需要的语句是 UPDATE,它修改现有行。
    【解决方案2】:

    这是一般格式的外观 -

    Update <<Table Name>> 
    set <<ColumnName1>> = <<ColumnValue1>> , 
    <<ColumnName2>> = <<ColumnValue2>> Where 
    <<Primary Key Column>> = <<Primary Key Value>>
    

    这里的表名 = 你的表名

    Column Name = Your Specific Column Name
    Column Value = Your Specific Column Value
    Primary Key Column = Your table primary key
    Primary Key Value = Value of your table primary key
    

    希望对你有所帮助。

    【讨论】:

    • 我认为primary key 一词在这里不正确。你可以在where 子句中包含任何你想要的东西,甚至是重言式。
    • 是的,我们应该为一行编写唯一的组合键,因为问题指示了特定的行。我已经写了主键,因为数据库中的大多数表都包含主键。
    • 我了解到您想解释UPDATE的这种具体用法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 2018-11-13
    • 1970-01-01
    • 2019-10-03
    • 2013-11-10
    • 2016-08-02
    • 1970-01-01
    相关资源
    最近更新 更多