【发布时间】:2011-03-28 01:16:57
【问题描述】:
我有一个没有主键或唯一键的表。
我想更新按日期排序的第 n 个记录中的一些值。
mysql 更新限制没有偏移量(如限制 1,2),我该怎么做?
【问题讨论】:
-
您必须查看使用变量创建排名值的 MySQL 查询,该值会在值更改时重置以获得类似于
ROW_NUMBER() OVER(PARTITION BY value) AS rank的功能,因为 MySQL 不支持分析函数跨度>
我有一个没有主键或唯一键的表。
我想更新按日期排序的第 n 个记录中的一些值。
mysql 更新限制没有偏移量(如限制 1,2),我该怎么做?
【问题讨论】:
ROW_NUMBER() OVER(PARTITION BY value) AS rank 的功能,因为 MySQL 不支持分析函数跨度>
UPDATE table_name
...
WHERE ids in ( SELECT ids FROM table_name limit ....)
【讨论】:
这很丑,但是...
你能创建一个临时表吗?我建议使用日期字段的排序值创建一个临时表,并使用 LIMIT 子句进行选择。然后,您可以使用临时表中的值更新原始表。
应该是这样的:
create temporary table temp
select date_field from mytable order by date_field limit 4,2;
update mytable set another_field='FOUND'
where date_field in (select date_field from temp);
【讨论】: