Вы можете использовать коррелированный подзапрос, как показано ниже. Это предполагает, что будет возвращено ровно одно совпадающее значение. Это вызовет ошибку, если возвращается более одного подходящего значения или задано поле null, если возвращается ноль. Если это последнее поведение нежелательно, вам понадобится статья where
.
UPDATE table1
SET field1 = (SELECT DISTINCT table2.ValueColumn
FROM table2
WHERE table2.JoinColumn = table1.JoinColumn)
Редактировать
Для просмотра записей с 0 или более 1 матчей вы можете использовать
SELECT table1.JoinColumn, COUNT(DISTINCT table2.ValueColumn)
FROM table1
LEFT JOIN table2
ON table2.JoinColumn = table1.JoinColumn
GROUP BY table1.JoinColumn
HAVING COUNT(DISTINCT table2.ValueColumn) <> 1
Да Вы правы, спасибо. Я не думал об этой возможности. – Nicolas
@Nicolas Для этого также существует синтаксис JOIN. Есть в SQL Server, но я не уверен, что это то же самое в MySQL. –
@Martin. Я в настоящее время тестирую его, и я не могу избавиться от этой ошибки: 'Subquery возвращает более 1 строки', несмотря на попытку добавления DISTINCT в подзапрос. – Nicolas