これらのテーブル(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はありませんあなたにこれをさせてはいけません。
誰でもこれを達成する良い方法を考えることができますか?
この質問は尋ねたと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
'SELECT'文に' MAX(version) 'を持ち、' GROUP BY'節に 'task_id'を入れてみてください。 – Viki888