Вставьте одно и то же фиксированное значение в несколько строк - PullRequest
29 голосов
/ 14 января 2011

У меня есть таблица со столбцом, давайте назовем ее table_column, которая в настоящее время null для всех строк таблицы.Я хотел бы вставить значение "test" в этот столбец для всех строк.Может кто-нибудь дать мне SQL для этого?

Я пробовал INSERT INTO table (table_column) VALUES ("test");, но это только заполняет эту последнюю строку.Как мне сделать все строки одновременно?

Ответы [ 5 ]

70 голосов
/ 14 января 2011

Вы ищете ОБНОВЛЕНИЕ не вставлено.

UPDATE mytable
SET    table_column = 'test';

UPDATE изменит значения существующих строк (и может включать WHERE, чтобы он влиял только на определенные строки), тогда как INSERT добавляет новую строку (что выглядит так, как будто она изменила только последнюю строку, но фактически добавление новой строки с этим значением).

18 голосов
/ 14 января 2011

Это потому, что в терминологии реляционных баз данных то, что вы хотите сделать, называется не «вставка», а «ОБНОВЛЕНИЕ» - вы обновляете поле существующей строки с одного значения (в вашем случае NULL) до «test»

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

Вам не нужна вторая строка, если вы хотите обновить 100% строк.

2 голосов
/ 14 января 2011

На самом деле вы добавляете строки. Чтобы обновить содержимое существующих строк, используйте оператор UPDATE:

UPDATE table SET table_column = 'test';
1 голос
/ 14 января 2011

Требуемый SQL:

Update table set table_column = "test";

Отправленный вами SQL создает новую строку вместо обновления существующих.

1 голос
/ 14 января 2011
UPDATE `table` SET table_column='test';
...