带条件的 SQL 插入查询

标签 sql sql-server sql-server-2008 tsql

我试图在满足条件时将值插入表的 1 列。

注意:该表已包含所有列的数据,但 1 为空。我想根据 WHERE 子句在这 1 列中插入值。

我有这个查询:

INSERT INTO <TABLE_NAME>
(COLUMN_NAME)
(VALUE)
WHERE <CONDITION>

我得到一个异常(exception):

Incorrect Syntax Near WHERE Keyword



我可以使用 UPDATE 来做到这一点:
UPDATE <TABLE_NAME>
SET <COL_NAME>
WHERE <CONDITION>

但想知道为什么 INSERT 查询失败。任何建议表示赞赏。

最佳答案

据我了解您的问题,您已经在一行中有数据,而该行中的一列没有值,因此您希望向该列添加值。

这是更新现有行的场景,而不是插入新行。当数据已经存在并且您想要修改记录时,您必须使用 UPDATE 子句。当您想在表中插入新行时选择插入。

因此,在您当前的场景中,Update Clause 是 Where Clause 的 friend ,因为您想修改记录的子集而不是全部。

UPDATE <TABLE_NAME>
SET <COL_NAME>
WHERE <CONDITION>

根据任何 RDBMS 语法(我认为),INSERT 子句没有任何 Where 子句。插入是无条件的sql查询,而SELECT、UPDATE、DELETE都是有条件的命令,你可以在后面的所有语句中添加Where子句。

关于带条件的 SQL 插入查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32039059/

相关文章:

sql - 放弃所有约束

sql-server - 使用 T-SQL 查找大约重复的数据库记录?

c# - 调用带返回值的存储过程

sql - 查找给定日期的数据

如果第一个结果为假,mysql sleep 将无法工作

mysql查询在使用存储值和实际数计算时返回不同的结果

sql - MySQL中如何使用GROUP BY连接字符串?

sql - 将编码信息添加到 FOR XML 的结果中

sql - Lucene 和经典 ASP?

mysql - SQL 按主键计数分组