如何在MariaDB中使用不同的值限制查询

时间:2016-01-07 00:41:54

标签: sql mariadb

我有一张这样的表:

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

我想要的是一个查询来选择前十个不同的nums,所以如果我想得到两个第一个nums,我将获得前六行。我正在使用MariaDB。

2 个答案:

答案 0 :(得分:0)

在MySQL中你可以使用LIMIT。需要注意的是,IN子查询不直接支持LIMIT,因此必须在IN子查询中使用子查询:

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 |        "" |

答案 1 :(得分:0)

尝试这种方法:

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

这里有一个小提琴:http://sqlfiddle.com/#!9/1468ad/5