2013-04-23 40 views
0

我有两个表,我需要从中提取数据。表1 (t1)和样本值:高级SQL查询选择不同的数据

| 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_id的标准将来自Table1,其中user_id = 223和is_good =“0”。
所以在这种情况下,我希望它返回 |---1---|---3------|------A------||---5---|---2------|------X------|

这可以做一个快速的SQL查询与一些关节和不同的选择/内选或其他?

感谢提前:)

回答

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