Android SQLite最大函数问题
我想从具有MAX(col)的表中检索行,但如果col处的值具有相同的数据,MAX(col)将返回多行。 我有以下两个表格: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_
**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 aparna2用户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使用上述条件编辑了输出的问题。