2012-07-06 53 views

回答

0

您可以使用像一个LIMIT条款(MySQL docu)在下面的代码,但要知道,除非你申请某种(ORDER BY col),实际行的排序,即输出可能会有所不同,因为是在SQL表中没有内部排序。

SELECT * 
    FROM yourTable 
    LIMIT 1,1 

更好的解决方案将是,以一个附加列id添加到表中,然后由该id选择。或者至少使用前面所述的id列进行排序。

+0

谢谢你..它给我第三排的价值..不是第二排。实际上在限制2,1什么是2和1代表什么? – Luna 2012-07-06 10:50:41

+0

@Tickua我的不好。 “LIMIT”是基于零的 - 纠正了一个。从文件中可以看到,第一个值是偏移量(您想要开始的行数),第二个值是您想要总计的行数。 – Sirko 2012-07-06 10:55:42

+0

行..表行索引从0开始?如果我有5行,它将从0到4? – Luna 2012-07-06 11:00:48

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> 

其中是一个指定序号位置的整数字面值,它是一个整数字面值,指定从该位置开始读取多少行。

+0

ok ..感谢您的解释..但我有一个jTable,并且显示在jTable中的值与数据库表中的值相同,假设第一个值的jTable将是数据库表的第一行值,如果我把一个特定的键我可以很容易地检索到相应的值。但在这种情况下没有特定的键,所以我想要一个解决方案,以这种方式选择值.. – Luna 2012-07-06 10:57:56

+0

如果没有钥匙,那么这就是你应该先解决的问题。就像我说的那样,除非你明确强加一行,否则对行的顺序没有任何保证。另见http://stackoverflow.com/questions/2040724/how-does-sql-server-sort-your-data/2040833#2040833 – 2012-07-06 11:09:23

+0

好吧..我会试着..谢谢你.. – Luna 2012-07-06 11:17:15