ich auf Frage arbeiteWird INTERSECT gegenüber Unterabfragen bevorzugt?
alle Schüler finden, die in der Tabelle Likes (als Student, der gerne mag oder ist) nicht angezeigt und ihre Namen und Typen zurück. Sortieren Sie nach der Note, dann nach dem Namen in jeder Klasse.
Ich schlug vor, die folgenden tun, alle Menschen dazu zu bringen, die nicht Likes und mit den Menschen, die ich kreuz, die nicht jedermann gefällt:
SELECT name, grade
FROM Highschooler h1
LEFT JOIN Likes l1
ON (l1.ID1 = h1.ID)
WHERE l1.ID1 IS NULL
INTERSECT
SELECT name, grade
FROM Highschooler h1
LEFT JOIN Likes l1
ON (l1.ID2 = h1.ID)
WHERE l1.ID2 IS NULL
ORDER BY grade, name
Eine alternative Möglichkeit, dies mit einem zu tun Unterabfrage (wie ich online gefunden habe)
select name, grade from Highschooler H1
where H1.ID not in (select ID1 from Likes union select ID2 from Likes)
order by grade, name;
Welcher Weg wird bevorzugt? Ich denke, dass meine Methode besser lesbar ist. Wie Adrien sagte, sind beide akzeptable Wege, es zu tun, Ich denke, Ihr Weg ist lesbarer wegen der Großbuchstaben-Funktionen und bessere Einrückung und nicht wegen der Abfrage selbst.
Ich würde sagen, beide sind akzeptabel. Der Unterschied könnte in den Leistungen liegen und dieser Aspekt hängt normalerweise von der gegebenen Anwendung ab. –
Ich dachte, MySQL unterstützt keine Schnittmenge. – apokryfos