我是SQLite的新手,我在使用多个表进行查询时遇到问题。
表1
MessageNum Regression RegressionNum
=========== ========== =============
1234567890 true 12340000
1234567890 true 23450000
1234567890 true 34560000
表2
MessageNumber Data ChangeNumber
============= ==== =========
1234567890 text2 1234567
1234567890 text8 2345678
1234567890 text9 3456789
1234567890 text4 4567890
1234567890 text5 5678901
1234567890 text3 6789012
1234567890 text1 7890123
我希望查询只返回表2中基于MAX(ChangeNumber)的一行数据...以及表1中所有匹配的行。
所以结果应该是
MessageNum Regression RegressionNum Data ChangeNumber
=========== ========== ============= ==== ============
1234567890 true 12340000 text1 7890123
1234567890 true 23450000 text1 7890123
1234567890 true 34560000 text1 7890123
我似乎无法以上面列出的格式获取查询结果。我已经使用了JOIN和SUB SElECTS,但似乎没有任何工作正常。
查询应包含以下条件。
table1.MessageNum=1234567890 AND table1.Regression="true" AND MAX(table2.ChangeNumber)
答案 0 :(得分:1)
您可以使用Table2上的WHERE NOT EXISTS
来获取最大行:
SELECT t1.MessageNum, t1.Regression, t1.RegressionNum, t2.Data, t2.ChangeNumber
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.MessageNum = t2.MessageNumber
WHERE NOT EXISTS (
SELECT 1
FROM Table2 t2a
WHERE t2a.MessageNumber = t2.MessageNumber
AND t2a.ChangeNumber > t2.ChangeNumber
)
AND t1.MessageNum = 1234567890
AND t1.Regression = "true"
答案 1 :(得分:0)
使用MAX
聚合函数,试试这个:
SELECT T2.MessageNumber, T1.Regression, T1.RegressionNum, T2.Data, T2.ChangeNumberMax
FROM (SELECT MessageNumber, MAX(ChangeNumber) as ChangeNumberMax, Data
FROM Table2
GROUP BY MessageNumber) T2
INNER JOIN Table1 T1
ON T2.MessageNumber=T1.MessageNum
WHERE T1.MessageNum=1234567890 AND T1.Regression="true"