我正在尝试根据参数从关系表中提取最后一个值
Posted
技术标签:
【中文标题】我正在尝试根据参数从关系表中提取最后一个值【英文标题】:I am trying to extract the last value from a relational table according to a parameter 【发布时间】:2020-04-24 21:32:21 【问题描述】:我试图根据参数从关系表中提取最后一个值,它给了我这个错误
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的 '1 * FROM version WHERE codeProject = '7' ORDER BY idVersion DESC' 附近使用正确的语法
public class VersionDAO
ConexionSQL conectar = new ConexionSQL();
Connection con;
PreparedStatement ps;
ResultSet rs;
String changeVersion;
public Version buscarVer(int bus, Proyecto p)
String sql = "SELECT TOP 1 id, name FROM version WHERE codeProject = '"+ bus +"' ORDER BY idVersion DESC";
try
con = conectar.getConexionSQL();
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
Version ver = new Version();
while (rs.next())
ver.setIdversion(rs.getInt(1));
ver.setNameVersion(rs.getString(2));
changeVersion = rs.getString(2);
return ver;
catch(Exception e)
e.printStackTrace();
return null;
【问题讨论】:
【参考方案1】:MySQL 不支持 TOP 1
,您需要 LIMIT 1
代替 - 它位于查询的末尾,而不是 ORDER BY
子句之后,而不是 SELECT
关键字之后。
SELECT id, name
FROM version
WHERE codeProject = ?
ORDER BY idVersion DESC LIMIT 1
请注意,您应该使用参数化语句,而不是将变量转换为查询字符串:这样可以提高查询效率,在必要时处理转义(例如,如果您的参数包含嵌入的引号),并保护您的来自 SQL 注入的代码。
【讨论】:
以上是关于我正在尝试根据参数从关系表中提取最后一个值的主要内容,如果未能解决你的问题,请参考以下文章
如何从 .hdf5 文件表中提取列名并根据指定的列名提取特定行数据?