我需要两个表来提取数据。 表1(t1)和样本值:
| rq_id | user_id | is_good |
|----- 1 |---- 223 |-------- 0 ---- |
|----- 3 |---- 223 |-------- 1 ---- |
|----- 4 |---- 239 |-------- 0 ---- |
|----- 5 |---- 223 |-------- 0 ---- |
表2(t2)和样本值:
| rq_id | version | random_content |
|---1---|---3------|------A------|
|---1---|---2------|------B------|
|---1---|---1------|------C------|
|---3---|---2------|------D------|
|---3---|---1------|------F------|
|---5---|---2------|------X------|
|---5---|---1------|------W------|
在Table1中,rq_id是唯一的,在table2中有多行具有相同的rq_id
我需要从Table2获得每行rq_id 1行(只有具有最高版本的那一行)。从Table2中选择request_ids的标准来自Table1,其中user_id = 223并且is_good =" 0"。
所以在这种情况下,我希望它返回:
|---1---|---3------|------A------|
和
|---5---|---2------|------X------|
。
这可以在一个具有一些关节和不同选择/内部选择或其他任何东西的快速SQL查询中完成吗?
答案 0 :(得分:1)
SELECT b.*
FROM Table1 a
INNER JOIN Table2 b
ON a.rq_ID = b.rq_ID
INNER JOIN
(
SELECT rq_id, MAX(version) max_ver
FROM table2
GROUP BY rq_id
) c ON b.rq_ID = c.rq_ID AND
b.version = c.max_ver
WHERE a.user_ID = 223 AND a.is_good = 0