2016-11-16 2 views
0

これらのテーブル(task_idとpost_id)を結合して、以下に示すすべてのものを返します。それはいいですが、私が次にやりたいことは、最高のバージョンを持つアイテムを保持しながら、task_idの重複を削除することです。列yのDISTINCTを取得している間に列xのMAXを取得する

私はそうのような2つのテーブルがあります。

項目

ID title task_id project_id  version 
1 "Test"  123   456   1 
2 "Test 2"  124   456   1 
3 "Test 3"  125   456   1 
4 "X 3.1"  125   456   1.1 
5 "X 3.2"  125   456   1.2 

タスク

ID post_id meta_key meta_value 
1  123 _completed  0 
4  124 _completed  0 
5  125 _completed  0 

を、私はこれまでのところ、このSQL文を持っている:

SELECT * 
FROM items t0 
INNER JOIN tasks AS t1 
ON t0.task_id = t1.post_id 
WHERE t1.meta_key = '_completed' 
AND project_id = 456 

返します:

ID title task_id project_id version ID post_id meta_key meta_value 
1 "Test"  123   456   1  1  123 _completed  0 
2 "Test 2"  124   456   1  1  124 _completed  0 
3 "Test 3"  125   456   1  1  125 _completed  0 
4 "X 3.1"  125   456   1.1  1  125 _completed  0 
5 "X 3.2"  125   456   1.2  1  125 _completed  0 

どのように私は、重複TASK_ID年代を削除しますが、テーブルにはなりますので、最高のバージョンを保持することができます

ID title task_id project_id version ID post_id meta_key meta_value 
1 "Test"  123   456   1  1  123 _completed  0 
2 "Test 2"  124   456   1  1  124 _completed  0 
5 "X 3.2"  125   456   1.2  1  125 _completed  0 

基本的に私はTASK_ID BYバージョンと使用してGROUP BYそれらを注文することにより、最も近いだが、どうやらSQLはありませんあなたにこれをさせてはいけません。

誰でもこれを達成する良い方法を考えることができますか?

+0

この質問は尋ねたとSOに延々と答えています。それらの答えの少数は正しいです。さらに、このトピックは、マニュアルの中のある程度深いところでカバーされています。それでも、まだ苦労している場合は、http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-beを参照してください-a-very-simple-sql-query – Strawberry

+0

'SELECT'文に' MAX(version) 'を持ち、' ​​GROUP BY'節に 'task_id'を入れてみてください。 – Viki888

答えて

0

関連する投稿に基づいて、これはうまくいくと思います。

SELECT * 
FROM items t0 
INNER JOIN tasks AS t1 ON t0.task_id = t1.post_id 
INNER JOIN 
    (SELECT task_id, MAX(version) AS MaxVersion 
    FROM items 
    GROUP BY task_id) groupedt0 
ON t0.task_id = groupedt0.task_id 
AND t0.version = groupedt0.MaxVersion 
AND project_id = 456 
AND t1.meta_key = '_completed' 
ORDER BY ID ASC 

参照:How can I SELECT rows with MAX(Column value), DISTINCT by another column in SQL?

+0

完全に動作します。ありがとうございました!申し訳ありませんが、検索で簡単に見つけられるとは思いませんでした。プラス私は現時点ではSQLでかなり平均です。 – SamohtVII

関連する問題