MySQL: заявление об обновлении - PullRequest
0 голосов
/ 22 мая 2011

Что я хочу сделать, это сравнить две таблицы и выполнить обновление в таблице, где столбец не совпадает с тем же столбцом.

Я знаю, что в SQL это

update tableb
   set myInt = 1
 where tableA.Column <> tableb.column

Как это делается в MySQL?

В основном, все, что я хочу сделать, - это когда tableA не имеет одинакового значения в tableB update tableB.

Ответы [ 4 ]

1 голос
/ 22 мая 2011

Вам нужно объединить две таблицы.

UPDATE tableB 
INNER JOIN tableA on (TableA.id = TableB.id) 
SET tableB.MyInt = 1 WHERE TableA.`Column` != TableB.`Column`

Объединение соответствующих идентификаторов кажется логичным, потому что

JOIN tableA on (tableA.`column` != tableB.`column`) 

будет делать что-то похожее на перекрестное объединение, вероятно, не то, что вы ожидаете.

Обратите внимание, что column является зарезервированным словом в MySQL и должно быть заключено в обратные черты: &#96;

0 голосов
/ 22 мая 2011

Использование:

UPDATE tableB 
   SET tableB.MyInt = 1 
 WHERE NOT EXISTS (SELECT NULL 
                     FROM tablea a
                    WHERE a.column = TableB.Column)

... который также можно записать как:

   UPDATE TABLE_B
LEFT JOIN TABLE_A ON TABLE_A.COLUMN = TABLE_B.COLUMN
      SET TABLE_B.myint = 1
    WHERE TABLE_A.COLUMN IS NULL
0 голосов
/ 22 мая 2011

Оператор != не <>

Попробуйте это.

update tableb set myInt = 1 where tableA.Column!=tableb.column

Редактировать: К сожалению, я полностью пропустил часть соединения.Посмотрите ответ ниже этого.

0 голосов
/ 22 мая 2011

Вы должны быть в состоянии сделать это с помощью объединения.

UPDATE TABLEB
FROM TABLEB
INNER JOIN TABLEA ON TABLEA.COLUMN!=TABLEB.COLUMN
SET myINT=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...