如何在 MariaDB 中限制具有不同值的查询

How do I limit a query with distinct values in MariaDB

我有一个 table 这样的:

Id   Num   Some text
--------------------
1     1        ""
2     1        ""
3     2        ""
4     2        ""
5     2        ""
6     2        ""
7     3        ""

我想要的是查询 select 前十个不同的数字,所以如果我想获得前两个数字,我将获得前六行。我正在使用 MariaDB。

在 MySQL 中您可以使用 LIMIT。需要注意的是,IN sub-queries 不直接支持 LIMIT,因此您必须在 IN sub-query:

中使用 sub-query

SQL Fiddle

MySQL 5.6 架构设置:

CREATE TABLE Table1
    (`Id` int, `Num` int, `Some text` varchar(2))
;

INSERT INTO Table1
    (`Id`, `Num`, `Some text`)
VALUES
    (1, 1, '""'),
    (2, 1, '""'),
    (3, 2, '""'),
    (4, 2, '""'),
    (5, 2, '""'),
    (6, 2, '""'),
    (7, 3, '""')
;

查询 1:

select * from Table1
where Num in (select Num FROM(select distinct Num from Table1 order by Num limit 2)a)

Results:

| Id | Num | Some text |
|----|-----|-----------|
|  1 |   1 |        "" |
|  2 |   1 |        "" |
|  3 |   2 |        "" |
|  4 |   2 |        "" |
|  5 |   2 |        "" |
|  6 |   2 |        "" |

试试这个方法:

select *
from Table1 as T1
join (
  select distinct num
  from Table1 
  order by num
  limit 2 ) as T2
on T1.num = T2.num  
  ;

在fiddle这里:http://sqlfiddle.com/#!9/1468ad/5