Как я могу написать оператор SQL для обновления столбца в таблице из другого столбца в той же таблице? - PullRequest
0 голосов
/ 04 августа 2010

У меня есть оракул БД, где программа записывает в два столбца при обновлении таблицы. 2-й столбец основан на значении из 1-го столбца. Со временем люди вручную отредактировали базу данных и забыли вставить значения во второй столбец. Я хотел бы написать простой SQL-оператор, который обновляет все столбцы и синхронизирует 2-й столбец с 1-м столбцом. Я знаю, что для этого есть простое утверждение. Занимаясь небольшим поиском, я подумал что-то вроде следующего:

UPDATE suppliers 
SET supplier_name = ( 
    SELECT customers.name 
    FROM customers 
    WHERE customers.customer_id = suppliers.supplier_id
) 
WHERE EXISTS ( 
    SELECT customers.name 
    FROM customers 
    WHERE customers.customer_id = suppliers.supplier_id
);

Однако, это между двумя разными таблицами, где я буду делать это на одной и той же таблице.

Ответы [ 3 ]

3 голосов
/ 04 августа 2010

Следующее работает в SQL Server (еще не проверял Oracle).

UPDATE SUPPLIERS SET Supplier_Name = CustomerName

Я бы попробовал и посмотрел, работает ли он ...

2 голосов
/ 04 августа 2010
update tableName set col2 = col1
2 голосов
/ 04 августа 2010

Если оба столбца находятся в одной и той же таблице, вы можете использовать самый простой запрос:

UPDATE your_table 
   SET column1 = column2
 WHERE column1 != column2;

Это предполагает, что оба столбца НЕ равны NULL.Однако, если столбцы обнуляются, вместо этого используйте decode:

UPDATE your_table 
   SET column1 = column2
 WHERE decode(column1, column2, 1, 0) = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...