与更新查询混淆。如何将select转换为使用MySQL更新?
我在这里看到了非常相似的问题,但我尝试将以下查询转换为UPDATE语句的尝试失败了 我想更新使用上述查询选择的所有结果的列 如何将其转换为update语句 谢谢。这应该可以做到:与更新查询混淆。如何将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 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)