如何在 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
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)
| 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
我有一个 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:
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)
| 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