2016-03-10 6 views
0

У меня есть таблица, в которой я хочу, чтобы обновить со значениями из другой таблицы, и я использую следующий код:MySQL - проблемы при обновлении таблицы

UPDATE TableA 
SET Value = (
    SELECT TableB.Value2 
    FROM TableB 
    WHERE TableA.id=TableB.ta_id 
); 

Несмотря на то, что TableA.id является первичным ключом of tableA, я продолжаю получать следующую ошибку:

Код ошибки: 1175. Вы используете безопасный режим обновления, и вы попытались обновить таблицу без WHERE, которая использует столбец KEY. Чтобы отключить безопасный режим, переключите параметр в настройках -> Редактор SQL и снова подключитесь.

Что я делаю неправильно?

+0

Вашего SQL IDE не позволяют обновлений все записи таблицы. Это переключатель сохранения. Выключите его в настройках. –

+0

use 'SET SQL_SAFE_UPDATES = 0;' –

ответ

2

Проблема в том, что вы не используете оператор Where в своем основном запросе. В вашем случае, это было бы изменить весь ваш встр это то, что вы хотите сделать, Вы можете desactivate безопасного режима MySQL или делать всегда истинное состояние как

UPDATE TableA,TableB 
SET TableA.Value = TableB.Value2 
WHERE TableA.id = TableB.ta_id; 
+0

Я пытаюсь обновить каждую строку в таблице A, которая имеет другую строку в таблицеB, такую, что TableA.id = TableB.ta_id. Не уверен, что это означает изменение всей моей таблицы? Если да, то это плохая практика? –

+0

Это не значит изменять всю таблицу, только та, что находится в TableB. Поэтому вместо 'WHERE TableA.id не является нулевым', просто поместите' WHERE TableA.id = TableB.ta_id'. Таким образом, он изменит только строки, которые также находятся в таблицеB – Matriac

+0

Это дает мне ошибку: Код ошибки: 1054. Неизвестный столбец «TableB.ta_id» в разделе «where» –

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