2013-04-23 39 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