SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 27.10.2016 22:05:09

kaiseri
Завсегдатай
Зарегистрирован: 26.09.2016
Сообщений: 26

Апдейт колонки.

Помогите плиз,
нужно перенести часть строки в соседнюю колонку (выделить часть номера.)  Получив ошибку 1093, сделал выборку и апдейт одним запросом, погуглил. Нашел, что нужно делать через вложенный запрос.
 

UPDATE `parse`
SET `a_reg_number_organ` = (SELECT `reg` FROM (SELECT SUBSTRING(`a_reg_number`, 12, 4) AS `reg` FROM `parse`) AS tmp)
WHERE `a_reg_number_organ` = ''




на данный получаю Subquery returns more than 1 row, что не так?  как пройтись по все таблице и перенести обрезанную колонку?

Неактивен

 

#2 27.10.2016 22:14:56

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Апдейт колонки.

такая ошибка возникает в случаях, когда подзапрос возвращает больше чем 1 значение.
Не зная подробностей можно попробовать
ограничить вывод подзапроса через limit
(только перепишите через join, см http://sqlinfo.ru/articles/info/19.html секцию MySQL error 1235).


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 28.10.2016 12:55:20

kaiseri
Завсегдатай
Зарегистрирован: 26.09.2016
Сообщений: 26

Re: Апдейт колонки.

так,

UPDATE t ... WHERE col = (SELECT * FROM (SELECT ... FROM t...) AS t1);


пример который указан, именно такой-же как и у меня, и тоже с точки зрения логики, внутренний подзапрос должен отдавать таблицу с несколькими записями. И отдавать ошибку, ту-же, что и  у меня. Вот я и не могу поняять, где я не так думаю sad.

Неактивен

 

#4 28.10.2016 13:22:20

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Апдейт колонки.

читайте до конца smile

Для запросов UPDATE и DELETE можно использовать многотабличную форму. Например, для UPDATE запрос выше примет вид:

UPDATE t, (SELECT ... FROM t ...) t1 ... WHERE t.col=t1.col;

Неактивен

 

#5 28.10.2016 13:39:00

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Апдейт колонки.

посмотрел внимательней на исходный запрос, а зачем вам вообще подзапросы, если вы переносите данные в рамках одной строки в соседную колонку?

UPDATE `parse`
SET `a_reg_number_organ` = SUBSTRING(`a_reg_number`, 12, 4)
WHERE `a_reg_number_organ` = '';

Неактивен

 

#6 28.10.2016 14:16:33

kaiseri
Завсегдатай
Зарегистрирован: 26.09.2016
Сообщений: 26

Re: Апдейт колонки.

блииииииииииииииииин, спасибо smile))). это меня заклинило.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson