Использование предложения IN с MySQL с указанными значениями - PullRequest
2 голосов
/ 02 января 2009

Я пытаюсь написать запрос, который обновляет строки в таблице, если определенный столбец имеет значение в списке, который я предоставляю:

UPDATE MY_TABLE SET COL1 = 'xyz' WHERE COL2 IN ('x', 'y', 'z');

Я получаю синтаксическую ошибку, но я знаю, что это должно быть возможно. По сути, это одна команда для выполнения следующих 3 команд:

UPDATE MY_TABLE SET COL1 = 'xyz' WHERE COL2 = 'x';
UPDATE MY_TABLE SET COL1 = 'xyz' WHERE COL2 = 'y';
UPDATE MY_TABLE SET COL1 = 'xyz' WHERE COL2 = 'z';

Значения xyz устанавливаются пользователем динамически, и может быть произвольное количество значений (или я просто закодировал бы его длинным и ужасным способом и покончил бы с ним. Единственная информация, которую я могу найти на * Предложение 1007 * IN касается подзапросов. Может ли кто-нибудь помочь мне переписать этот запрос?

Большое спасибо.

Ответы [ 4 ]

2 голосов
/ 02 января 2009

Так что теперь, когда все говорят мне искать несбалансированные цитаты, я более внимательно посмотрел на запрос и обнаружил следующее:

UPDATE BOOK SET INVOICE_ID TO '1' WHERE START_NUMBER IN (1)

которое должно быть:

UPDATE BOOK SET INVOICE_ID = '1' WHERE START_NUMBER IN (1)

Спасибо за помощь, но теперь я чувствую себя хорошо и глупо.

2 голосов
/ 02 января 2009

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

Содержат ли некоторые значения x, y, z кавычки как часть значения? Вы могли бы иметь несбалансированные цитаты. Например, следующее явно является синтаксической ошибкой:

UPDATE MY_TABLE SET COL1 = 'xyz' WHERE COL2 IN ('O'Reilly', 'Smith', 'Jones');

Дайте еще немного информации, и я отредактирую этот ответ с дополнительными предложениями по устранению неполадок.

0 голосов
/ 02 января 2009

Я уверен, что вам не нужно указывать отдельные значения.

UPDATE MY_TABLE SET COL1 = 'xyz' WHERE COL2 IN ('x, y, z');

Это всегда меня тоже заводит.

А если значения числовые, вам вообще не нужны кавычки.

0 голосов
/ 02 января 2009

Это ваш полный запрос на обновление? Похоже, что отсутствует конечная часть. Если не считать недостающие биты, это выглядит хорошо. Можете ли вы отправить полученное сообщение об ошибке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...