Android SQLite最大函数问题

Android SQLite最大函数问题,android,sqlite,max,Android,Sqlite,Max,我想从具有MAX(col)的表中检索行,但如果col处的值具有相同的数据,MAX(col)将返回多行。 我有以下两个表格: **Table1** row_id INTEGER (Primary key auto incremented), name TEXT **Table2** row_id INTEGER (Primary key auto incremented), ref_id INTEGER (Foreign key of Table1(row_id)), date_in_

我想从具有MAX(col)的表中检索行,但如果col处的值具有相同的数据,MAX(col)将返回多行。 我有以下两个表格:

**Table1**
row_id INTEGER (Primary key auto incremented), 
name   TEXT

**Table2**
row_id INTEGER (Primary key auto incremented), 
ref_id INTEGER (Foreign key of Table1(row_id)), 
date_in_long TEXT, 
data   TEXT  
我正在执行以下查询,以获取具有MAX(date_in_long)的行,该行应为单个最新输入的行

SELECT DISTINCT a.name, b.row_id, b.ref_id, b.date_in_long, b.data
FROM Table1 a, Table2 b 
WHERE a.row_id=b.ref_id 
AND b.date_in_long =
(SELECT MAX(c.date_in_long) 
 FROM Table2 c 
 WHERE c.ref_id=a.row_id
)
如果date_in_long与ref_id的值不同,则输出结果将是完美的。。但当值相同时,它返回多行。 范例

表1: 行id名称 1 aparna
2用户1 3 XYZ

表2: 长数据中的行id参考id日期 1 1 98 aparna的数据1 2 aparna的1100数据2 3 1 100 aparna的数据3 4 2 200用户1的数据1 5 2 300用户1的数据2 XYZ的6 3 100数据1

以上查询结果:

row_id  ref_id  name    date_in_long  data
2       1       aparna  100           data2 for aparna
3       1       aparna  100           data3 for aparna
5       2       user1   300           data2 for user1
6       3       XYZ     100           data1 for XYZ
row_id  ref_id  name     date_in_long  data
3       1       aparna   100           data3 for aparna
5       2       user1    300           data3 for user1
6       3       XYZ      100           data1 for XYZ
row_id  ref_id  name     date_in_long  data
3       1       aparna   100           data3 for aparna
6       3       XYZ      100           data1 for XYZ
预期结果应为:

row_id  ref_id  name    date_in_long  data
2       1       aparna  100           data2 for aparna
3       1       aparna  100           data3 for aparna
5       2       user1   300           data2 for user1
6       3       XYZ     100           data1 for XYZ
row_id  ref_id  name     date_in_long  data
3       1       aparna   100           data3 for aparna
5       2       user1    300           data3 for user1
6       3       XYZ      100           data1 for XYZ
row_id  ref_id  name     date_in_long  data
3       1       aparna   100           data3 for aparna
6       3       XYZ      100           data1 for XYZ
请让我知道如何在上述问题的查询

添加以下条件(作为Alexandar在本文中提供的解决方案),不包括一些行

AND
b.row_id = (Select MAX(c.row_id) from Table2 c where c.ref_id = b.ref_id)
添加上述行id条件后的输出:

row_id  ref_id  name    date_in_long  data
2       1       aparna  100           data2 for aparna
3       1       aparna  100           data3 for aparna
5       2       user1   300           data2 for user1
6       3       XYZ     100           data1 for XYZ
row_id  ref_id  name     date_in_long  data
3       1       aparna   100           data3 for aparna
5       2       user1    300           data3 for user1
6       3       XYZ      100           data1 for XYZ
row_id  ref_id  name     date_in_long  data
3       1       aparna   100           data3 for aparna
6       3       XYZ      100           data1 for XYZ
USER1没有行

请让我知道如何解决这个问题

谢谢,, 当做 Aparna

问题在于,“distinct”关键字并不意味着“返回每个值与其他行不同的行”,而是意味着“返回以某种方式与其他行不同的行”

因此,尽管第2行和第3行具有相同的ref\u id,但它们具有不同的row\u id和数据列-因此,它们是唯一的行

一个选项是添加一个额外的条件,以便只考虑特定ref id的max row_id

添加的条件看起来像这样

AND
b.row_id = (Select MAX(c.row_id) from Table2 c where c.ref_id = b.ref_id)

下面的查询解决了我的问题

SELECT a.name, b.row_id, b.ref_id, b.date_in_long, b.data, MAX(date_in_long)
FROM Table1 a INNER JOIN Table2 b 
ON a.row_id=b.ref_id 
GROUP BY a.row_id
谢谢,, 当做
Aparna

使用上述条件编辑了输出的问题。