Предыдущие версии MariaDB для обработки подзапроса - PullRequest
1 голос
/ 17 июня 2020

Здравствуйте, я обновил функцию запросом SQL, который отлично работает при тестировании в моей среде разработки с версией MariaDB 10.4.11

Я заметил, что производственная среда использует версию MariaDB 10.0.38

Эта версия не может обрабатывать простой подзапрос?

UPDATE TABLE_NAME 
SET issued_marker = 'on' 
WHERE COLUMN_ID = (SELECT COLUMN_ID FROM TABLE_NAME WHERE COLUMN_2_ID ='$id')

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Вы можете сделать то же самое с собственным внутренним соединением:

UPDATE TABLE_NAME t1
INNER JOIN TABLE_NAME t2 ON t1.COLUMN_ID = t2.COLUMN_ID AND t2.COLUMN_2_ID ='$id'
SET t1.issued_marker = 'on' 
0 голосов
/ 17 июня 2020

Запрос выглядит хорошо, за исключением одного случая: он завершится ошибкой, если подзапрос вернет несколько строк.

UPDATE TABLE_NAME 
SET issued_marker = 'on' 
WHERE COLUMN_ID IN (
    SELECT DISTINCT COLUMN_ID FROM TABLE_NAME WHERE COLUMN_2_ID ='$id'
); 

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

...