2016-03-31 15 views
1

Ich habe Schwierigkeiten, Zeilen aus meiner Tabelle auszuwählen, die nicht mit dem aktuellen Jahr geändert wurden. Hier ist ein Beispiel für die Abfrage gab ich auf:MYSQL :: Auswählen von Zeilen aus der Tabelle ohne die neuesten

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

Ja, bitte beachten Sie, dass es repetitve Reihen als das gleiche Auto und Art für Vorjahre. Ich möchte alle von meinem Ergebnis ausschließen. zB car => ferrari, type => F50 kann Wert für 2016 und 2015 haben. Ich möchte alle diejenigen ausschließen, die im Jahr 2016 aktualisiert wurden. Wählen Sie nur Autos und Typen, deren Werte in diesem Jahr nicht aktualisiert wurden. – braumer

Antwort

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

Wow das eigentlich hat gearbeitet ... warum bin ich sogar über Joins gegangen. Ich schätze Ihre Antwort sehr. Ich muss mehr über die HAVING-Anweisung lesen. Weißt du, wie es gegen 120000 Zeilen von Daten tun würde. Ich werde Ihre Antwort markieren, sobald es mir erlaubt, – braumer

+0

Verwenden einer Funktion wie 'year()' kann nicht Indizes verwenden. Um Indizes zu verwenden, könnten Sie versuchen, stattdessen 'HAVING sum (modified_on like '2016%') = 0' zu verwenden. –

Verwandte Themen