Как я могу обновить различные столбцы SQL на основе другого столбца в той же строке? - PullRequest
0 голосов
/ 09 февраля 2019

Я использую SQL Server и мне нужно обновить сотни записей.Столбец A имеет уникальные значения, и на основании этого мне нужно обновить столбец B одной и той же таблицы, все с разными значениями.По сути, я ищу способ выполнить следующее, но в целом:

UPDATE table
set column B = 'value'
where column A = 'unique value'

Ответы [ 5 ]

0 голосов
/ 09 февраля 2019

Спасибо @Джим Маколей.Это сделал это.Спасибо всем за ваш вклад.

0 голосов
/ 09 февраля 2019

Здесь вам нужно написать курсор, чтобы обновить значение столбца в той же таблице.

BEGIN <br>
    DECLARE c_a, c_b TEXT;<br>
    DECLARE c_ab CURSOR FOR<br>
    SELECT column_a,column_b FROM c_table;<br>

   OPEN c_ab;<br>
   LOOP 

   FETCH c_ab into c_ca, c_cb;

       IF c_ca = "0" THEN
        update c_table SET column_b = "No" WHERE 
        column_a = c_ca;
       END IF;

       IF c_ca = "1" THEN
        update c_table SET column_b = "Yes" WHERE 
        column_a = c_ca;
       END IF;

   END LOOP; 

   CLOSE c_ab; 
END

Рабочий и проверенный код [см. Некоторые учебники по курсорам для обновления в соответствии с вашими условиями], и с этим вы можетеобновить таблицу навалом и быстрее

0 голосов
/ 09 февраля 2019

Как насчет:

update table set
columnB = concat('unique ', columnA)

Вы можете или не можете нуждаться в предложении where, в зависимости от ваших потребностей.

0 голосов
/ 09 февраля 2019

С сотнями значений вам лучше иметь отображение {уникальное значение - значение обновления}, определенное в отдельной таблице, как запрашивает TT.Но в противном случае, если вы согласны с жестким кодированием этих отображений в вашем выражении UPDATE:

UPDATE t
SET B = CASE A
        WHEN 'unique value1' THEN 'value1'
        WHEN 'unique value2' THEN 'value2'
        WHEN 'unique value3' THEN 'value3'
        ELSE 'Unknown'
    END
FROM table t

Кстати, вышеизложенное относится только к 3 сопоставлениям

0 голосов
/ 09 февраля 2019

Это то, что вы ожидаете,

UPDATE table
set column B = case when column A = 5 then 'unique string' end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...