обновить и выбрать ту же проблему таблицы в MySQL - PullRequest
0 голосов
/ 01 января 2011

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

UPDATE `stories` SET `position`=(select @i:=@i+1) 
WHERE `topic` IN 
    (SELECT `topic` FROM `stories` WHERE `newstype`='2' GROUP BY `topic`)

, но цель и назначение - это одна и та же таблица, и mysql не позволяет мне ее запускать.как я могу это реализовать?

Ответы [ 2 ]

1 голос
/ 01 января 2011

вы можете смоделировать внутреннее соединение и обновлять только до первой таблицы, например

set @pos:=0; 
update 
  stories a, 
  (select topic, @pos:=@pos+1 as new_position 
   from stories 
   where newstype=2 group by topic
  ) as b 
set a.position=b.new_position 
where a.topic=b.topic;
0 голосов
/ 01 января 2011

Вы всегда можете попробовать запустить

`SELECT `topic` FROM `stories` WHERE `newstype`='2' GROUP BY `topic`

сначала запрос, а затем синтаксический анализ его в формате для использования в IN () в основном запросе.

Ой, подождите, я думал, что смотрю на PHP, а не на общий список вопросов.

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