2016-03-31 9 views
1

私のテーブルから現在の年で変更されていない行を選択するのは苦労しています。ここで私はあきらめたクエリの例は次のとおりです。MYSQL ::最新のテーブルを持たないテーブルから行を選択

SELECT * FROM test_cars INNER JOIN 
(SELECT car as c, type as t FROM test_cars 
WHERE YEAR(modified_on)='2016' GROUP BY c,t) as tbl 
ON tbl.c!=car AND tbl.t!=type 
WHERE value !='' 
GROUP BY car,type 
+0

はい、前の年の同じ車やタイプなどrepetitve行があることに注意してください。私はそれらをすべて私の結果から除外したい。例:car => ferrari、type => F50は2016年と2015年に設定された値を持つことができます.2016年に更新されたものすべてを除外します。値が更新されていない車とタイプを選択してください – braumer

答えて

1
SELECT car, type 
FROM test_cars 
GROUP BY car, type 
HAVING sum(YEAR(modified_on) = 2016) = 0 
+0

働いた...なぜ私はジョインに行くのですか?私はあなたの答えに非常に感謝します。私はHAVINGステートメントの詳細を読む必要があります。 120000行のデータに対してはどうなるか知っていますか? – braumer

+0

'year()'のような関数を使うと、インデックスを使うことができません。インデックスを使用するには、代わりに 'HAVING '(modified_on like' 2016% ')= 0'を使用してみてください。 –

関連する問題