2017-02-16 13 views
0

Я могу обновить все отрицательные значения в таблице на NULL для одного столбца:наиболее эффективный способ обновить все отрицательные значения в таблице NULL в MySQL

UPDATE table_1 
SET var1 = NULL 
WHERE var1 < 0 
; 

Это здорово, но у меня есть 200 столбцов, которые Я хочу применить этот UPDATE.

Я могу явно запустить эту же парадигму 200 раз, обновляя каждую переменную по одному. Однако это означает, что мне нужно будет использовать около 1000 строк кода для этого.

Если я использовал if, я мог бы сделать это в 200 строках кода. Но это все еще оставляет меня липким и неудовлетворительным.

Когда я хочу сделать что-то подобное в R, я мог бы использовать что-то вроде df[df<0] <- NA и в нескольких нажатиях клавиш, я бы сделал.

В MySQL есть ли способ приблизиться к этой проблеме в краткой, элегантной и интеллектуальной манере?

+0

Вашего дизайн сломан. Таблица базы данных не является таблицей. – Strawberry

+0

На самом деле это временная таблица, которая делает несколько попыток для поисковых целей. С этой целью мне нужно заменить все эти отрицательные значения, которые указывают на различные внутренние коды ошибок и еще что-то ... Я хотел бы рассмотреть их как NULL –

ответ

1

Вы можете обновить столбцы условно, с помощью IF() присвоить свое первоначальное значение обратно к ним, когда условие не выполнено:

UPDATE table_1 
SET var1 = IF(var1 < 0, NULL, var1), 
    var2 = IF(var2 < 0, NULL, var2) 
    ... 
+0

GREATEST также будет работать – Strawberry

+0

@Strawberry Как бы вы использовали 'GREATEST' в это? – Barmar

+0

Nevermind - Я думал, что OP хочет 0, а не NULL – Strawberry