您想要运行这样的查询:
UPDATE `stories` SET `position`=(select @i:=@i+1)
WHERE `topic` IN
(SELECT `topic` FROM `stories` WHERE `newstype`='2' GROUP BY `topic`)
但目标和目标是同一个表,mysql不允许我运行它。 我该如何实现呢?
答案 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,而不是整体问题列表。