java - MySQL 的准备语句,以便它会选择包含最高时间戳的行,该列将比给定参数更大?

标签 java sql mysql prepared-statement

如何为 MySQL 编写 Java 准备语句,以便它从给定参数较大的列中选择包含最高时间戳值的行?

我得到了: SELECT * FROM 表 WHERE timestamp_col=(SELECT MAX(timestamp_col) FROM 表)

但是如何将其转换为准备好的语句呢?

最佳答案

由于没有真正的参数,所以非常简单:

Connection con = null;
PreparedStatement prest;
try{
  Class.forName("com.mysql.jdbc.Driver");
  con = DriverManager.getConnection("jdbc:mysql://<server>:3306/<db>","<login>","<pass>");
  try{
    String sql = "SELECT * FROM table WHERE timestamp_col=(SELECT MAX(timestamp_col) FROM table)";
    prest = con.prepareStatement(sql);
    // prest.setInt(1,12000); // example of using a parameter for prepared statement
    // parameters go in the SQL as ?
    ResultSet rs1 = prest.executeQuery();
  } catch( SQLException s ) { /* etc */ }

如果您只是要求 MAX(),则不需要参数。这是绝对安全的。

关于java - MySQL 的准备语句,以便它会选择包含最高时间戳的行,该列将比给定参数更大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4632547/

相关文章:

Java TextField getText() 返回先前的字符串值

java - 关于自定义对象排序问题的集合二分搜索

php - 撤消用户创建,写入数据库

mysql - 如果最后一个字符不是数字,则删除它

mysql - 使用 ActiveRecord 使用 OR 子句进行查询的 "Rails Way"是什么?

mysql - 查找参加完全相同类(class) SQL 的学生列表

java - 限制 REST API 的 JSON 响应中的字段?

Java 2D 旋转和全局坐标?

Java SQL 100 万行

sql - 将字符串转换为日期并在给定字符串无效时引发异常