2016-06-03 6 views
-1

Wie würde ich das für MySQL umschreiben?MySQL-Codefehler

select id, name 
From student 
Except 
Select id, name 
from student natural join takes 
where year < 2009 
+0

Ich bin mehr so ​​gefragt, wie ich dies für MySQL sorry für die Formulierung umschreiben könnte. –

+0

Die Frage nicht direkt ansprechen, da es so aussieht, als ob die erste Antwort das abdeckt, aber 'natürliche Verbindung' kann ein gutes Rezept für eine Zeitbombe sein; Alles, was passieren muss, ist irgendwo auf der ganzen Linie, dass eine Spalte zu einer Tabelle hinzugefügt wird, die bereits in der anderen existiert (und nicht für Joins verwendet werden sollte), oder für eine Spalte, die für die Verknüpfung sinnvoll ist von einem Tisch oder dem anderen entfernt werden. Der heimtückischste Teil ist, dass solche Änderungen Ihre Abfrage nicht unterbrechen/ungültig machen, sondern lediglich die Ergebnisse "verfälschen", was möglicherweise zu einer Kaskade von Problemen ohne Warnungen führt. – Uueerdo

Antwort

3

Statt except zu verwenden, verwenden not in für MySQL

select id, name 
from student 
where id not in (
    select id 
    from student natural join takes 
    where year < 2009)