首页 文章

高级SQL查询以选择不同的数据

提问于
浏览
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------|

在表1中,rq_id是唯一的,在表2中有多个行具有相同的rq_id .
我需要从Table2获得每行rq_id 1行(只有具有最高版本的那一行) . 从Table2中选择request_ids的标准来自Table1,其中user_id = 223并且is_good = "0" .
所以在这种情况下,我希望它返回:
|---1---|---3------|------A------|
|---5---|---2------|------X------| .

这可以在一个快速SQL查询中完成,其中包含一些关节和不同的选择/内部选择或其他任何内容吗?

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
    

相关问题