0

我有两个表需要从中提取数据。表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 查询中完成吗?

4

1 回答 1

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
于 2013-04-23T15:14:30.470 回答