2012-10-23 87 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就可以得到你想要的記錄。