mysql - mysql中更新和选择同一个表问题

标签 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 不允许我运行它。 我该如何实现它?

最佳答案

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

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;

关于mysql - mysql中更新和选择同一个表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4573757/

相关文章:

java - Apache Tomcat 上的两个 MySQL 数据源配置

MySQL查询在PHP中返回0行,实际记录在phpmyadmin中

mysql - log4j 记录到数据库(在集群中)

php - 如果右连接不返回任何行,则 mysql 设置为 null 或 0

mysql - 根据另一个表中的值更新表

php - 非重复返回 PDO PHP

php - 单击时,切换图像以及 MySQL 数据库中的值

java - 仅当值大于当前值时才更新字段的 SQL 语句

MySQL 更新 - 使用从表 B 计算的值设置表 A 中的值

sql - 更新并使用 sum 来计算列值