【问题标题】:Convert SQL Server query to MySQL [duplicate]将 SQL Server 查询转换为 MySQL [重复]
【发布时间】:2011-07-28 04:53:36
【问题描述】:

可能重复:
Select TOP X (or bottom) percent for numeric values in MySQL

如何在 MySQL 中编写这个查询?

SELECT TOP 50 PERCENT * FROM Persons

表格中的条目数会不断变化,所以我需要按百分比而不是固定数字来选择。

【问题讨论】:

  • @Sandro / 查看我对真实副本的回答。您链接到的是直接 TOP,而不是 TOP X PERCENT

标签: mysql sql sql-server


【解决方案1】:

这实际上是一个duplicate question,但我现在有一个更好的、单通的、快速的答案:

SELECT *
FROM
(
    SELECT tbl.*, @counter := @counter +1 counter
    FROM (select @counter:=0) initvar, tbl
    ORDER BY ordcolumn
) X
WHERE counter <= (50/100 * @counter)
ORDER BY ordcolumn;

【讨论】:

  • 实际上是两次通过(一次来自表,一次来自派生),但仍然是 O(N) 而不是 O(N^3),这是链接问题中接受的答案。 OTOH,我在副本中的原始答案工作得稍微快一些,尽管它需要批处理而不是单个查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 2016-07-29
  • 2020-03-06
相关资源
最近更新 更多