更新并在mysql中选择相同的表问题

时间:2011-01-01 10:17:50

标签: mysql sql-update

您想要运行这样的查询:

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

但目标和目标是同一个表,mysql不允许我运行它。 我该如何实现呢?

2 个答案:

答案 0 :(得分:1)

您可以模拟内部联接并仅更新到第一个表,例如

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;

答案 1 :(得分:0)

您可以随时尝试运行

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

首先查询,然后将其解析为主要查询中IN()中使用的格式。

哦等等,我以为我在看PHP,而不是整体问题列表。