我有这样的查询:
update table
set status = 1
where status = 2;
但是我只想对前400名进行此操作。我尝试添加“ limit 0,400”(就像我在查询中那样),但这没有用。我进行了一些搜索,而mysql似乎不像SQL
Server那样支持TOP(n)命令。
知道我该怎么做吗?
编辑:为了将来参考,我使用以下样式进行选择,效果很好:
select *
from table
where ... limit 0, 400;
但无论出于何种原因,在更新中它都不会与“ 0”一起使用。我会认为这种不一致和模棱两可的行为,但是哦。
UPDATE table
SET status = 1
WHERE status = 2
ORDER BY id
LIMIT 400
签入MySQL 5.2.0-falcon-alpha-community-nt-log
,确认工作正常。
在您的情况下0
,LIMIT 0, 400
那是行不通的。
你不能使用下界UPDATE
的LIMIT
。
问题内容: 我想更新表中列的前10个值。我有三栏;,和。要获得前10个值,我可以使用以下方法: 我想做的是根据的大小将值设置为一系列。这可以在PostgreSQL中完成吗? 问题答案: WITH cte AS ( SELECT id, row_number() OVER (ORDER BY account DESC NULLS LAST) AS rn FROM accountrecords ORD
问题内容: 问题很多,但我似乎找不到与我遇到的情况相匹配的问题。我想在前n个查询中执行一些分组。我的数据看起来像这样(显然是假值)。 该表的日期范围涵盖数月,每月有数千行。我想做的是一个查询,告诉我哪个IP地址出现在每个月中最频繁。我可以使用以下方法完成一个月的操作: 但是我真正想要的是能够看到数据集中每个月的前n个。从本质上讲,这禁止了我使用我指定的where子句。当然,当我这样做的时候,我在所
问题内容: 我真的很困惑查询需要返回在特定列上具有最大值的前N行。 例如,如果行具有相同的值。我必须返回还是要排。 问题答案: 如果您这样做: 您将获得前N行。 如果您这样做: 或者,您可以将其表达为: 从概念上讲,以下是您想要执行的操作,但在MySQL中可能不起作用:
问题内容: 如何从表中选择前n个最大值? 对于这样的表: 对于n = 2,结果需要为: 下面的方法仅为每个组选择最大值。 返回值: 问题答案: 对于n = 2,您可以 对于任何n,您都可以使用此处介绍的方法模拟分区之上的排名。 编辑:其实这个文章会给你你需要什么。 基本上是这样的 用要分组的列的名称和保存值的列的名称替换。 要弄清楚它的功能是如何进行的,请从最内部的查询中逐步进行并运行它们。 而且
问题内容: 作为大学修订的一部分,我试图回答以下问题: 在“员工”数据库中的表的至少一个属性上创建索引,使用MySQL“ XPLAIN”工具在其中清楚地显示收益(相对而言或恢复)和负面(相对于更新) )创建相关索引。 在第一部分中,我在 employees 表上创建了一个索引,并在索引前后使用了以下查询,以从检索的角度证明它是有益的: 该索引的作用是将访问的行从300,000减少到仅63。 现在,
问题内容: 我有大约1000行的表。我必须将n个随机行的表中的column(“ X”)更新为’Y’。为此,我可以有以下查询 是否有另一种有效的方式来编写此查询。该表没有索引。请帮忙? 问题答案: 我将使用ROWID: 我使用ROWID的实际原因并不是为了提高效率(它仍然会进行全表扫描)-如果列不是唯一的,则您的SQL可能不会更新所需的行数。 只有1000行,您不必担心效率(也许有一亿行)。该表上没