簡體   English   中英

從特定的 WHERE 條件獲取前 10 行

[英]Get previous 10 row from specific WHERE condition

我目前正在開發一個需要 MySql 數據庫的項目,並且很難構建我想要的查詢。

我想從我的 mysql 查詢的特定 WHERE 條件中獲取前 10 行。

例如

我在哪里 date='December';

我想要過去 10 個月的結果。

二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月這樣。

另一個例子是。 如果我的數據庫中存儲了 17 個字符串。 在我的 where 子句中,我指定 WHERE strings='eyt' 限制為 3

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

結果必須是

payb
six
seven

預先感謝您的建議或答案

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

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

您可以將ASC更改為DESC以獲得第一個或最后一個 10。

這是一個解決方案:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM