我在MySQL中看到了一些解决方案,但似乎找不到SQLite的任何东西。我正在尝试获取数据库中最近7个条目的值。我知道如何按日期订购它们,但由于某种原因,我找不到返回给定数量的语法。
这是使用JDBC
PreparedStatement get_recent_id = conn.prepareStatement("SELECT * FROM workout_log ORDER BY t desc");
这将返回他们的命令,但我在想SELECT 7 *
....会工作,但这是我得到的错误
Exception in thread "main" java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (near "FROM": syntax error)
at org.sqlite.DB.newSQLException(DB.java:383)
at org.sqlite.DB.newSQLException(DB.java:387)
at org.sqlite.DB.throwex(DB.java:374)
at org.sqlite.NativeDB.prepare(Native Method)
at org.sqlite.DB.prepare(DB.java:123)
at org.sqlite.PrepStmt.<init>(PrepStmt.java:42)
at org.sqlite.Conn.prepareStatement(Conn.java:404)
at org.sqlite.Conn.prepareStatement(Conn.java:399)
at org.sqlite.Conn.prepareStatement(Conn.java:383)
at WeeklyReport.main(WeeklyReport.java:38)
答案 0 :(得分:2)
SELECT * FROM workout_log ORDER BY t desc Limit 7;
另请注意,使用*
可能会导致下游出现问题。如果您的列更改订单或添加新订单会怎样?考虑列出您的字段。
答案 1 :(得分:1)
我认为这会有所帮助。使用limit
SELECT * FROM workout_log ORDER BY t desc limit 7
答案 2 :(得分:0)
仅添加limit 0,7
查询是: -
SELECT * FROM workout_log ORDER BY t desc limit 0,7;