2016-09-19 34 views
-5

我目前正在開發一個需要MySql數據庫的項目,而且我很難構建我想要的查詢。從特定的WHERE條件中獲取前10行

我想從我的mysql查詢中特定的WHERE條件得到前面的10行。

例如

我的where是date ='December';

我想過去10個月的結果。

二月,三月,四月,五月,六月,七月,八月,九月,十月,nov那樣。

另一個例子是。 如果我有17個字符串存儲在我的數據庫中。在我的where子句我指定WHERE字符串=「EYT」限3

Test 
one 
twi 
thre 
for 
payb 
six 
seven 
eyt 
nayn 
ten 
eleven 
twelve 
tertin 
fortin 
fiftin 
sixtin 

其結果必然是提前爲您的建議

payb 
six 
seven 

感謝或者接聽

+2

分享你試用過的樣品輸入和預期輸出 – 1000111

+0

order by ID desc limit 0,10或某物會工作,但我不明白你的日期條件 –

+0

你的數據庫結構是如何? – AkshayP

回答

0

如果您正在使用PDO這是正確的語法:

$objStmt = $objDatabase->prepare('SELECT * FROM calendar ORDER BY id DESC LIMIT 10'); 

您可以更改ASCDESC爲了得到第一或者最後10

0

這裏有一個解決方案:

select t.* 
from mytable t 
inner join (select id from mytable where strings = 'eyt' order by id limit 1) x 
    on t.id < x.id 
order by t.id desc 
limit 3 

演示:http://sqlfiddle.com/#!9/7ffc4/2

它輸出的行按降序排列,但你可以忍受的,否則將該查詢放入子查詢中並顛倒順序。


回覆您的評論:

在上面的查詢x被稱爲「相關名稱」,所以我們可以參考子查詢的列,好像他們是一個表的列。當您使用子查詢作爲表時,它是必需的。

我選擇了字母x任意。您可以使用任何您喜歡的關聯名稱作爲關聯名稱,遵循您將用於任何標識符的相同規則。

您還可以選擇爲查詢中的任何簡單表(如上面的mytable t)定義關聯名稱,以便您可以使用方便的縮寫名稱引用該表的列。例如在t.id < x.id

有些人使用術語「表別名」,但技術術語是「相關名稱」。

+0

x代表什麼? –