我有一张这样的表:
Id Num Some text -------------------- 1 1 "" 2 1 "" 3 2 "" 4 2 "" 5 2 "" 6 2 "" 7 3 ""
我想要的是一个查询来选择前十个不同的nums,所以如果我想得到两个第一个nums,我将获得前六行。我正在使用MariaDB。
答案 0 :(得分:0)
在MySQL中你可以使用LIMIT。需要注意的是,IN
子查询不直接支持LIMIT,因此必须在IN子查询中使用子查询:
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