46

我有一个带有一列的表,我们称它为table_column当前null用于表的所有行。我想将"test"所有行的值插入该列。有人可以给我这个 SQL 吗?

我已经尝试过 INSERT INTO table (table_column) VALUES ("test");,但这只会填充最后一行。如何一次完成所有行?

4

7 回答 7

96

您正在寻找UPDATE而不是插入。

UPDATE mytable
SET    table_column = 'test';

UPDATE 将更改现有行的值(并且可以包含 WHERE 以使其仅影响特定行),而 INSERT 正在添加一个新行(这使它看起来只更改了最后一行,但实际上是添加一个新行)具有该值的行)。

于 2011-01-14T16:17:20.387 回答
26

这是因为在关系数据库术语中,您想要做的不是“插入”,而是“更新” - 您正在将现有行的字段从一个值(在您的情况下为 NULL)更新为“测试”

UPDATE your_table SET table_column = "test" 
WHERE table_column = NULL 

如果要更新 100% 的行,则不需要第二行。

于 2011-01-14T16:17:44.010 回答
2

你实际上在做的是添加行。要更新现有行的内容,请使用 UPDATE 语句:

UPDATE table SET table_column = 'test';
于 2011-01-14T16:19:00.937 回答
2

要更新现有行的内容,请使用以下UPDATE语句:

UPDATE table_name SET table_column = 'test';
于 2019-11-12T09:40:35.080 回答
1
UPDATE `table` SET table_column='test';
于 2011-01-14T16:17:49.450 回答
1

您需要的 SQL 是:

Update table set table_column = "test";

您发布的 SQL 创建了一个新行,而不是更新现有行。

于 2011-01-14T16:18:51.887 回答
0

要创建一个新的空列并为每一行(在 Toad for Oracle 中)填充相同的值(此处为 100 ):

ALTER TABLE my_table ADD new_column INT;
UPDATE my_table SET new_column = 100;
于 2020-03-04T12:03:09.097 回答