我想从具有 MAX(col) 的表中检索行,但是如果 col 的值具有相同的数据,则 MAX(col) 返回多行。我有2个表如下:
**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:
row_id 名称 1 aparna
2 user1 3 XYZ
表2: row_id ref_id date_in_long data 1 1 98 data1 for aparna 2 1 100 data2 for aparna 3 1 100 data3 for aparna 4 2 200 data1 for user1 5 2 300 data2 for user1 6 3 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
请让我知道上述查询中的问题。
添加以下条件(作为 Alexandar 在这篇文章中提供的解决方案)不包括某些行
AND
b.row_id = (Select MAX(c.row_id) from Table2 c where c.ref_id = b.ref_id)
添加以上 row_id 条件后的输出:
row_id ref_id name date_in_long data
3 1 aparna 100 data3 for aparna
6 3 XYZ 100 data1 for XYZ
USER1 没有行。
请让我知道如何解决此查询。
谢谢, 问候, 阿帕纳