从MySQL表的特定行检索值

时间:2012-07-06 10:31:54

标签: mysql

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

2 个答案:

答案 0 :(得分: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>

其中是指定序数位置的整数文字,是一个整数文字,指定从该位置开始获取的行数。

答案 1 :(得分:0)

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

SELECT *
  FROM yourTable
  LIMIT 1,1

更好的解决方案是在表格中添加其他列id,然后按id选择。或者至少使用id列进行排序,如前所述。