Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与更新查询混淆。如何将select转换为使用MySQL更新?_Mysql_Sql - Fatal编程技术网

与更新查询混淆。如何将select转换为使用MySQL更新?

与更新查询混淆。如何将select转换为使用MySQL更新?,mysql,sql,Mysql,Sql,我在这里看到了非常相似的问题,但我尝试将以下查询转换为UPDATE语句的尝试失败了 我想更新使用上述查询选择的所有结果的列 如何将其转换为update语句 谢谢。这应该可以做到: update table set column = 'somevalue' where id in (select id from ( SELECT table.* FROM table JOIN ( SELECT column, COUNT(*) AS rank FROM table GRO

我在这里看到了非常相似的问题,但我尝试将以下查询转换为UPDATE语句的尝试失败了

我想更新使用上述查询选择的所有结果的列

如何将其转换为update语句

谢谢。

这应该可以做到:

update table
set column = 'somevalue'
where id in
(select id from (

SELECT table.* FROM table JOIN (
  SELECT   column, COUNT(*) AS rank
  FROM     table
  GROUP BY column
) AS t USING (column) WHERE t.rank = 1) x)

不完全确定,但我想是这样的

update tblname set columname = value where tblname.columncompare = (select statement)
救命啊

基本上,这允许您按正常方式进行任何选择,然后将INSERT预先插入到副本中并附加到副本中


我猜这个查询是虚构的,但是对同一列进行过滤和排序有什么意义呢?

也就是说,不清楚您正在更新什么。特别是,您是否正在尝试从子查询更新秩值,或者将某个值设置为秩=1的常量?您好,有人用编辑搞乱了我的问题。正如我在原始Q中所述,这里,我想更新“列”,它是表中的任何一列。@Sudhakar这不是我从问题中理解的。。。我想更新所有结果的列…Icarus,我正在运行查询。不过这需要很长时间,希望它能起作用,谢谢@菲尔:我希望它也能工作,最重要的是,我希望你有一个数据库备份:P
update tblname set columname = value where tblname.columncompare = (select statement)
INSERT INTO table (id, value)
SELECT table.id, table.value
FROM table
JOIN (
  SELECT   column, COUNT(*) AS rank
  FROM     table
  GROUP BY column
) AS t USING (column)
WHERE t.rank = 1
ORDER BY t.rank DESC
ON DUPLICATE KEY UPDATE value = VALUES(value)