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

时间:2013-04-23 15:10:28

标签: mysql sql select

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

1 个答案:

答案 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