【问题标题】:mysql select all rows meeting the first and second lowest values?mysql选择所有满足第一个和第二个最低值的行?
【发布时间】:2014-01-10 12:03:00
【问题描述】:

我想知道如何选择每个满足结果表的第一和第二最低值的用户?

表格测试

NAME    VALUE
John    8
Marie   8
Luis    10
Carlos  10
Leo     13
Max     14

所以这种情况下的结果是

NAME    VALUE
John    8
Marie   8
Luis    10
Carlos  10

非常感谢!

顺便说一句,我在 google 和所有内容上进行了家庭作业,除了查询表然后使用 PHP 为我过滤之外什么也没想到,这对性能不利。

@Aziz 我收到错误:#1235 - 此版本的 MySQL 尚不支持“LIMIT & IN/ALL/ANY/SOME 子查询”

谢谢

感谢大家提供大量有用的答案!

以防万一像我一样陷入有趣的结果,我需要更多过滤器并且必须添加到查询中,如下所示:

选择 * 从results_temp 哪里 semana='semana6' 和 total_pontos在 ( 选择 * 从 ( 选择不同的total_pontos 来自results_temp

   WHERE semana='semana6'

  ORDER BY `total_pontos` 
  LIMIT 0,2

) 作为 t )

问候

【问题讨论】:

  • @LeandroCintrao- 欢迎来到堆栈溢出......现在从下一次开始,确保在把你的问题放在这里之前做一些家庭作业,我的意思是在谷歌上搜索它......找到相关的答案......试试看回答然后如果你没有找到任何东西然后把你的问题和你为这个问题所做的任何事情一起放在这里我的意思是Code, `queriy' 等等......
  • 顺便说一句,我做了我的家庭作业,在谷歌上搜索了所有东西,除了查询表然后使用 PHP 为我过滤之外什么也没想到,这对性能不利。
  • 那么你应该把查询和代码放在这里...

标签: mysql sql select sql-order-by limit


【解决方案1】:

试试这个:

SELECT * FROM Test WHERE `value` IN (
   SELECT * FROM (
      SELECT DISTINCT `value` 
      FROM Test 
      ORDER BY `value` 
      LIMIT 0,2
   ) AS t
)

【讨论】:

  • 我收到错误:#1235 - 此版本的 MySQL 尚不支持 'LIMIT & IN/ALL/ANY/SOME 子查询' 谢谢
  • @LeandroCintrao 根据您的评论,我已经更新了上面的答案。请尝试修改后的查询。
【解决方案2】:

试试这个:

SELECT t.* 
FROM Test t
INNER JOIN (SELECT DISTINCT t.value FROM Test t ORDER BY t.value LIMIT 2
           ) A ON t.value = A.value;

查看SQL FIDDLE DEMO

输出

|   NAME | VALUE |
|--------|-------|
|   John |     8 |
|  Marie |     8 |
|   Luis |    10 |
| Carlos |    10 |

【讨论】:

    【解决方案3】:
    SELECT *
    FROM tablename
    WHERE
      value <= (SELECT MIN(Value)
                FROM tablename
                WHERE value>(SELECT MIN(VALUE)
                             FROM tablename))
    

    请看小提琴here

    【讨论】:

      【解决方案4】:

      给定查询的不相关版本几乎总是更快...

      SELECT x.* 
        FROM tablename x 
        JOIN (SELECT DISTINCT value FROM tablename ORDER BY value LIMIT 2) y 
          ON y.value = x.value;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-23
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 2021-04-01
        • 1970-01-01
        • 2018-07-24
        相关资源
        最近更新 更多