我想从MySQL
表的特定行中检索值,例如:如果我的表有 5 行,我想检索第二行的值。这样做的查询是什么。
2 回答
“我想检索第二行的值。”
这个问题对关系数据库没有意义。在关系数据库中,没有行顺序的内在概念,因此没有“第一行”或“第四行”之类的东西。
在关系数据库中,表应该有一个或多个键。键是不能为 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 是指定序数位置的整数文字,并且是指定从该位置开始获取多少行的整数文字。
您可以在下面的代码中使用LIMIT
子句 ( MySQL docu ),但请注意,除非您应用某种排序 ( ORDER BY col
),否则输出的实际行可能会有所不同,因为 SQL 中没有内在排序- 表。
SELECT *
FROM yourTable
LIMIT 1,1
更好的解决方案是向表中添加一个附加列id
,然后按该列进行选择id
。或者至少使用该id
列进行订购,如前所述。