我在Android中使用SQLite
我有一张桌子。
idrow---message---date------transmitter----id_name
1 | Hello | 13-09-14 | Mike | 307
2 | Thanks | 17-09-14 | Louis | 12
3 | Byebye | 18-09-14 | Charlie | 879
4 | Hello | 18-09-14 | Mike | 307
5 | bllaaa | 18-09-14 | Mike | 307
6 | Nice | 19-09-14 | Charlie | 879
7 | Great | 19-09-14 | Mike | 307
我想为每个id_name获取最后插入的行。
例如:
id_name 307:7 |太棒了19-09-14 |迈克|
id_name 879 6 |很好| 19-09-14 |查理|
路易十二二2 |谢谢| 17-09-14 |路易斯|
我尝试使用此功能,但无法按预期工作
String Query = "Select * from TableName, max(id_row) group by id_name" ;
答案 0 :(得分:3)
您的查询仅适用于SQLite 3.7.11或更高版本,在API级别16(Jelly Bean)之前您将无法使用它。
在早期版本中,不保证非分组列来自与MAX()匹配的行。
您必须单独查找每个id_name
的最大ID,或者使用连接:
SELECT TableName.*
FROM TableName
JOIN (SELECT MAX(id_row) AS id_row
FROM TableName
GROUP BY id_name
) USING (id_row)
或IN:
SELECT *
FROM TableName
WHERE id_row IN (SELECT MAX(id_row)
FROM TableName
GROUP BY id_name)
(两个查询的工作方式相同。)
答案 1 :(得分:0)
嗯,您也可以使用以下代码......
SELECT * FROM TableName ORDER BY idrow DESC LIMIT 1
可能因为使用id_row而不是idrow
而收到错误答案 2 :(得分:-1)
试试这个
select * from TableName
where id_row = (SELECT max(id_row) FROM TableName)
order by id_row desc
limit 1