2012-10-23 53 views
0
format(sql, sizeof(sql), "SELECT * FROM `datab` WHERE License = %s", searchPlate); 

使用这种格式查询会给我所有的行结果,但我想要做的是采取前。有这个结果的第三或第五或甚至第十行,而不是所有的行。我怎样才能做到这一点?选择第n行WHERE字段= x值

+7

您使用的是什么RDBMS? – Thilo

+0

另外你想要第三排还是第四排?因为没有您的订单就不能指望确定性的结果。查看SQL-Server中的TOP和MySQL中的LIMIT。然后对您订购的变量使用max或min。 – Dan

+0

它是从游戏脚本中查询的。这是SA-MP的PAWN脚本,它查询数据库中的特定结果并将其返回以供进一步使用,而不是特定的数据库管理程序。 –

回答

0

像这样的东西应该在MySQL的工作:

format(sql, sizeof(sql), "SELECT * FROM `datab` WHERE License = %s ORDER BY IDColumnNameGoesHere LIMIT %d, 1", searchPlate, MyDesiredRowInteger); 

几点:

  • %d可能不适合,使用正确的符号整数。
  • 您肯定使用特定的RDBMS,您必须查看文档并找出答案。 SQL是标准,MySQL和SQL-Server等是该标准的实现。你必须找出你正在使用哪个实现。
  • 将变量粘贴到字符串中,就像您所做的那样,您很容易受到SQL injection的影响。你应该总是参数化你的查询。
  • LIMIT is specific to MySQL如果您使用的是不同的RDBMS,则必须转到另一个路径。例如SQL-Server,你可以使用TOP,但是因为这只有一个参数,所以你只需要使用min或者max就可以得到你想要的记录。