Забыли пароль?
Запросите новый здесь.

Автор темы: grungestranger
ID темы: 2304
Информация:
Тема содержит 3 сообщения, была просмотрена 2039 раз.
Просмотр темы
PHP-Fusion Russia » Веб-разработка » MySQL
 Распечатать тему
Задачка по MySQL
grungestranger
Привет всем.
Задача такая - изменение значения с подзапросом к этой же таблице.

В данном примере структура таблицы не важна. Ответы вроде: изначально неправильная организация данных - не принимаются.

Код я упростил, чтобы была понятна суть, сам по себе он не имеет смысла.

Скачать исходники  Код

UPDATE table1 AS t1
   SET field1 = (
      SELECT * FROM (
         SELECT count(*) FROM table1 AS t2
            WHERE t2.field2 < t1.field2
         ) AS grouped
   )





Дополнительный подзапрос нужен для того, чтобы избежать ошибки 1093: Can't specify target table for update in FROM clause

Но теперь другая проблема - значение t1.field2 является неизвестным внутри второго подзапроса

Можно ли как-то передать это значение этому подзапросу?
Переменные не помогают, так как, насколько я понимаю, переменную можно задать только в SELECT, то есть в первом подзапросе, и тогда этот запрос будет возвращать результат не из одного значения и будет ошибка - Operand should contain 1 column(s) - вот такой пример:

Скачать исходники  Код

UPDATE table1 AS t1
   SET field1 = (
      SELECT *, @field2 := t1.field2 FROM (
         SELECT count(*) FROM table1 AS t2
            WHERE t2.field2 < @field2
         ) AS grouped
   )





Единственный выход, который я вижу - во втором подзапросе выбирать всю таблицу (все нужные поля), а в первом уже выбирать нужные данные - вот так:

Скачать исходники  Код

UPDATE table1 AS t1
   SET field1 = (
      SELECT count(*) FROM (
         SELECT * FROM table1
         ) AS grouped
         WHERE grouped.field2 < t1.field2
   )





Может быть есть какое-то другое решение? Может быть как-то все-таки можно передать значение из изменяемой строки в подзапрос 2-го уровня вложенности...

Всем спасибо)
 
Web
Alipapa
Сохраненные процедуры, функции mysql 5-й версии позволяет создавать и использовать
 
Web
grungestranger
Ну а попроще никак?)
 
Web

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум:
Похожие темы
Темы Форум Ответов / Просмотров Последние сообщения
Превышена нагрузка на MySQL  →  Ошибки, баги 20 / 20160 02.04.2018 12:50
В базе Mysql вместо русских букв отображаются ????  →  MySQL 2 / 7549 15.11.2016 11:32
Работа с mysql даты  →  Вопросы новичков 4 / 5382 15.07.2016 07:55
Задачка.  →  Флуд 1 / 875 21.04.2015 14:04
задачка  →  PHP 3 / 1273 05.01.2015 07:55
комментарии на ajx+php+mysql  →  PHP 0 / 1558 02.12.2014 02:45
Зад. по MySQL  →  MySQL 29 / 19938 09.10.2014 07:21
Зад. по MySQL - Непонятное поведение XOR в ON у JOIN  →  MySQL 0 / 1165 07.10.2014 11:29
ошибка вывода mysql  →  Вопросы новичков 2 / 2061 21.12.2013 09:09
mysql php  →  Вопросы новичков 6 / 2513 20.12.2013 07:22
Топ 5 пользователей форума
Alex Alex (1,208)   Zaxap Zaxap (1,089)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)