mysql选择满足第一个和第二个最低值的所有行?

时间:2014-01-10 12:03:01

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

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

表测试

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子查询'

由于

感谢所有人提供有用的答案!

为了防止出现像我这样有趣的结果,我需要更多过滤器并且必须添加到查询中,如下所示:

SELECT * FROM results_temp WHERE  semana ='semana6'AND  total_pontos IN(    SELECT * FROM(       SELECT DISTINCT total_pontos       来自results_temp

   WHERE semana='semana6'

  ORDER BY `total_pontos` 
  LIMIT 0,2

)AS t )

此致

4 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分: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 |

答案 2 :(得分:1)

SELECT *
FROM tablename
WHERE
  value <= (SELECT MIN(Value)
            FROM tablename
            WHERE value>(SELECT MIN(VALUE)
                         FROM tablename))

请参阅小提琴here

答案 3 :(得分:1)

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

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