2016-01-07 54 views
0

限制的查詢與不同的值我有一個這樣的表:如何在MariaDB的

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

我要的是一個查詢,選擇前十個不同NUMS,所以如果我想獲得兩個第一個數字我會得到前六行。我正在使用MariaDB。

+0

我不知道MariaDB的,但在MSSQL我不喜歡這樣:select * from mytable其中num(通過num從mytable order中選擇前10個不同的num) – BoltBait

+0

我試過了這個查詢:select * from buses2 where數字在(從巴士2中選擇不同的數字order by numero limit 1, 10),我得到這個:#1235 - 這個版本的MariaDB還不支持'LIMIT&IN/ALL/ANY/SOME子查詢' –

回答

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

+0

您的查詢不會返回任何內容,我不知道爲什麼 –

+0

正如您所看到的那樣,它可以在您提供的示例數據的小提琴中工作。當你說「它什麼都不返回」時,我假設你是指你的實際數據庫?然後,你有沒有包括在問題中的差異。 – Turophile

+0

好吧,現在它工作,這是我的壞。非常感謝。 –

0

在MySQL中,您可以使用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 |  "" | 
+0

你需要一個ORDER BY嗎? – Turophile

+0

感謝您的評論。我已經通過 – cha

+0

添加了訂單,我在一週前嘗試過類似的事情,但MariaDB沒有實現IN子句。但是使用你的查詢,它不會返回任何內容:S –