我正在使用以下SQL查詢(xún)從數(shù)據(jù)庫(kù)中提取一些數(shù)據(jù)。我使用的DBMS是H2,一個(gè)原生的Java實(shí)現(xiàn)。盡管我可以使用H2工具檢索所述數(shù)據(jù),但當(dāng)我將其用作JAVA時(shí),它給我?guī)?lái)了以下錯(cuò)誤:PreparedStatement";預(yù)期的 “)”;SQL 語(yǔ)句: ...SELECT * FROM ( SELECT temp.*, ROW_NUMBER() OVER (PARTITION BY horseid ORDER BY updated desc) as num FROM( select horseid, name, breed, min_speed, max_speed, updated from horsehistory UNION select id, name, breed, min_speed, max_speed, updated from horse ) as temp WHERE updated<? AND horseid in ?)WHERE num = 1;我嘗試過(guò)使用換行符,帶有行分隔符的字符串生成器,但無(wú)濟(jì)于事。StringBuilder sb= new StringBuilder(); appendString(sb, "SELECT * FROM ("); appendString(sb, "SELECT temp.*, ROW_NUMBER() OVER (PARTITION BY horseid ORDER BY updated desc) AS num"); appendString(sb, "FROM("); appendString(sb, "SELECT horseid, name, breed, min_speed, max_speed, updated FROM horsehistory"); appendString(sb, "UNION"); appendString(sb, "SELECT id, name, breed, min_speed, max_speed, updated FROM horse"); appendString(sb, ") AS temp"); appendString(sb, "WHERE updated < ? AND horseid IN ?"); appendString(sb, ")"); appendString(sb, "WHERE num = 1;"); String sql=sb.toString();appendString 函數(shù)只是將換行符追加到字符串。我在準(zhǔn)備的聲明中使用它我做錯(cuò)了什么?編輯:這是有問(wèn)題的完整錯(cuò)誤Syntax error in SQL statement "SELECT * FROM ( SELECT TEMP.*, ROW_NUMBER() OVER (PARTITION[*] BY HORSEID ORDER BY UPDATED DESC) AS NUM FROM ( SELECT HORSEID, NAME, BREED, MIN_SPEED, MAX_SPEED, UPDATED FROM HORSEHISTORY UNION SELECT ID, NAME, BREED, MIN_SPEED, MAX_SPEED, UPDATED FROM HORSE ) AS TEMP WHERE UPDATED < ? AND HORSEID IN (?) ) WHERE NUM = 1 "; expected ")";分區(qū)后有一個(gè) [*]。這是否意味著錯(cuò)誤發(fā)生在那里?
2 回答
BIG陽(yáng)
TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
添加回答
舉報(bào)
0/150
提交
取消
