0

我想从MySQL表的特定行中检索值,例如:如果我的表有 5 行,我想检索第二行的值。这样做的查询是什么。

4

2 回答 2

3

“我想检索第二行的值。”

这个问题对关系数据库没有意义。在关系数据库中,没有行顺序的内在概念,因此没有“第一行”或“第四行”之类的东西。

在关系数据库中,表应该有一个或多个键。键是不能为 NULL 的列或其组合,并且对于任何不同的值组合最多有一行。然后,您可以使用该键检索行。

对行强加特定顺序可能是有意义的,之后您可以按序号位置引用行。排序是使用 ORDER BY 完成的,后跟一个确定顺序的表达式列表,然后是一个 LIMIT 子句来指定要检索的结果的哪个“切片”。

其他答案提到了 LIMIT,但省略了 ORDER BY 子句。这意味着您有零保证,当您下次执行完全相同的查询时,现在作为第 #x 行返回的任何内容都将返回。

与其将行视为具有位置,不如将行视为具有键,并使用它来检索特定行,如下所示:

SELECT ...
FROM   table
WHERE  column1 = value

或者如果您有一个复合键(键中有多个列),如下所示:

SELECT ...
FROM   table
WHERE  column1 = value1
AND    column2 = value2
...
AND    columnN = valueN

如果你真的还想使用仓位,一定要使用 ORDER BY 来强行下单:

SELECT ...
FROM   table
ORDER BY column1, ..., columnN
LIMIT <offset>, <count>

where 是指定序数位置的整数文字,并且是指定从该位置开始获取多少行的整数文字。

于 2012-07-06T10:51:24.470 回答
0

您可以在下面的代码中使用LIMIT子句 ( MySQL docu ),但请注意,除非您应用某种排序 ( ORDER BY col),否则输出的实际行可能会有所不同,因为 SQL 中没有内在排序- 表。

SELECT *
  FROM yourTable
  LIMIT 1,1

更好的解决方案是向表中添加一个附加列id,然后按该列进行选择id。或者至少使用该id列进行订购,如前所述。

于 2012-07-06T10:36:48.517 回答