繁体   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