2016-06-30 3 views
0

Есть ли способ вставить данные, где все строки равны нулю? Я знаю, это выглядит какВставить данные, где все строки равны нулю

select login from Users 
where login is null 

Когда он вернуть мне

1. null 
2. null 
3. null 

и так далее ...

Как я могу заполнить данные для всех этих пустых строк?

+1

Пожалуйста, отредактируйте ваш вопрос, предоставив образцы данных и желаемые результаты. В вашем запросе есть инструкция 'select', и это определенно не будет делать' insert'. –

+0

Что значит «где все строки равны нулю», вы имеете в виду, если нет строк? – HoneyBadger

+0

И, пожалуйста, сообщите нам, какую базу данных вы используете. –

ответ

3

Чтобы просто обновить нулевые значения в одном столбце, сделайте это;

UPDATE TableName 
SET FieldName = ISNULL(FieldName,'NewValue') 

Если вы хотите обновить все столбцы, когда они все являются NULL, то вы можете сделать что-то вроде этого

UPDATE TableName 
SET 
    Field1 = 'Value1' 
    ,Field2 = 'Value2' 
    ,Field3 = 'Value3' 
WHERE 
    Field1 IS NULL 
    AND Field2 IS NULL 
    AND Field3 IS NULL 

Если вы хотите заменить все NULL значения в таблице, независимо от того, весь ряд это NULL, тогда вы можете это сделать;

UPDATE TableName 
SET 
    Field1 = ISNULL(Field1,'Value1') 
    ,Field2 = ISNULL(Field2,'Value2') 
    ,Field3 = ISNULL(Field3,'Value3') 

Если вы хотите, чтобы обновить значения для различных значений для каждой строки вам потребуется способ связывания пользователей с их входа в систему. Базовая версия будет что-то вроде этого (я имею в виду это как LookupTable)

ID Login 
1 User1 
2 User2 
3 User3 

Ваш запрос будет что-то вроде этого;

UPDATE a 
SET a.login = ISNULL(a.login,b.login) 
FROM TableName a 
JOIN LookupTable b 
    ON a.id = b.id 

Это будет обновлять только значения с NULL, но вы, вероятно, хотите просто set a.login = b.login, чтобы гарантировать, что все данные правильно.

+0

Если у меня есть, например, 1000 строк, это будет слишком сложно написать. Есть ли другой способ решить эту проблему? – Vitaliy

+0

Хорошо, но сколько у вас колонок? Поле обычно относится к отдельной ячейке. –

+0

У меня 6 столбцов (Id, Name, Surname, E-Mail, Password, Login), и, например, у меня 1000 пользователей, где все логины имеют значения – Vitaliy

0

Предполагая, что все столбцы таблицы могут принимать NULL значения и не имеют значения по умолчанию, вы можете вставить строку в таблицу со всеми NULL значениями, выполнив:

insert into t(col) 
    select NULL; 

insert должны иметь по крайней мере один колонка; любая колонка будет делать.

+0

Это будет всего лишь одна строка «NULL». Я не думаю, что это то, что ищет OP, поскольку он сказал, что все строки равны нулю. Тем не менее, он должен дать более подробную информацию. –

+0

У меня вопрос об обновлении, мне нужно вставить данные во все нулевые строки в таблице – Vitaliy

+0

@RaduGheorghiu. , , Это похоже на то, чего хочет OP. –

1
UPDATE Users 
SET login = 'value' 
WHERE login is NULL 

Это приведет к обновлению столбца входа со значением «значение», если текущее значение равно NULL.

Смежные вопросы