2015-05-09 162 views
0

我是新來的。我在我的SQL查詢中有一些問題。我在我的java代碼中寫入sql查詢,從用戶獲取三個值(限制,最小值,最大值),並顯示最小和最大範圍之間的記錄。例如,如果用戶想要查看10條記錄並且在5到100個交易值之間。我正在努力弄清查詢的正確語法。我的查詢是限制最小最大範圍值的sql查詢語法

PreparedStatement statement = con.prepareStatement("" 
       + "Select Transaction_ID, Transaction_Value, Transaction_Type, Description " 
       + "from Banking " 
       + "limit ? " 
       + "where MIN(Transaction_Value) = ? AND " 
       + "MAX(Transaction_Value) = ? "); 

     //setting the limit of records, minimum and maximum values specified by the user 
     statement.setInt(1, num); 
     statement.setInt(2, min); 
     statement.setInt(3, max); 

     ResultSet result = statement.executeQuery(); 

當我執行此查詢,它提示的錯誤消息

Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MIN(Transaction_Value) = 5 AND MAX(Transaction_Value) = 100' at line 1.. 

您的幫助將是非常讚賞。我真的非常掙扎。我之前使用過簡單的查詢,但知道如何解決該錯誤。 非常感謝你提前。

+0

限制必須出現在where子句 – amdixon

+1

您的基本SQL語法中有多個錯誤。我建議你閱讀一些關於該語言的基本材料,直到你明白「limit」是最後一個語句,並且聚合函數不屬於where語句。 –

+0

「我有一些問題」確實如此 – Strawberry

回答

0

minmax只是您查詢中的範圍值 - 不需要應用聚合函數。此外,limit條款應該位於where條款後:

SELECT Transaction_ID, Transaction_Value, Transaction_Type, Description FROM Banking 
WHERE Transaction_Value >= ? AND 
     Transaction_Value <= ? 
LIMIT ? 
0

.... WHERE Transaction_Value BETWEEN 5 AND 100;

MIN和MAX應該在GROUP始終BY子句中使用超過1排

SELECT MAX(daily_typing_pages) 
    FROM employee_tbl; 

SELECT id, name, MAX(daily_typing_pages) 
    FROM employee_tbl GROUP BY name;