Minus-operator in sql
Ich versuche, eine sql-Abfrage erstellen mit minus.
Ich habe Abfrage1 liefert 28 Zeilen mit 2 Spalten
Ich habe query2 gibt 22 row2 mit gleichen 2 Spalten in Abfrage 2.
wenn ich erstellen Sie eine Abfrage Abfrage1 minus Abfrage 2 es sollte nur zeigen das 28-22=6 Zeilen.
Aber es zeigen sich alle 28 Zeilen zurückgegeben, die von Abfrage1.
Bitte beraten.
Die Datenbank, die Sie gezielt? Ich habe immer nur verwendet
Posten Sie Ihre Abfrage und einige Beispiel-Daten, die von beiden Seiten des minus?
(Vorausgesetzt, oracle) Für
Anscheinend auch keiner von den Tupeln zurückgegeben
-1 für nie mit der Beantwortung von Fragen über das, was rdbms dies ist.
minus
auf oracle, persönlich. Ich weiß es nicht streng in dieser form existieren, die auf Sql-Server, zum Beispiel.Posten Sie Ihre Abfrage und einige Beispiel-Daten, die von beiden Seiten des minus?
(Vorausgesetzt, oracle) Für
minus
zu arbeiten, wird die gesamte Zeile müssen genau übereinstimmen.Anscheinend auch keiner von den Tupeln zurückgegeben
query2
zeigen, wie Zeilen in query1
.-1 für nie mit der Beantwortung von Fragen über das, was rdbms dies ist.
InformationsquelleAutor Vidya J B | 2012-06-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, mit AUSNAHME anstatt MINUS. Zum Beispiel:
Betrachten wir einen Fall, wo Sie wollen, um herauszufinden, welche tasks in einer Tabelle, die nicht Ihnen persönlich zugeordnet wurde(Also im Grunde sind Sie versucht, zu finden, welche Aufgaben zur Verfügung stehen könnten, zu tun).
Zurückgeben würde alle Aufgaben, die nicht Ihnen persönlich zugeordnet wurde. Hoffe, das hilft.
InformationsquelleAutor dRagonsRage
Wenn MINUS nicht für Sie arbeiten, die Allgemeine form, die Sie wollen, ist der Haupt-Abfrage, die in der äußeren select-und eine Variante, die andere Abfrage, die in einer not exists-Klausel.
InformationsquelleAutor HLGEM
Den Felder möglicherweise nicht genau gleich. kann eines der Felder ist char(10) und der andere ist char(20), und Sie haben beide den string "TEST" in Ihnen. Sie könnten "Blick" das gleiche.
Wenn die Datenbank auf dem Sie arbeiten, unterstützt "INTERSECT", versuchen Sie diese Abfrage und sehen, wie viele sind perfekt passenden Ergebnisse.
Erhalten die Ergebnisse, die Sie erwarten, wird bei dieser Abfrage geben Sie 22 Zeilen.
Wenn 22 Zeilen sind Häufig in Abfrage 1 und query2, dann das MINUS-Abfrage geben würde, die 6 Zeilen, die nicht in den Zeilen. Meine Antwort war, um zu bestätigen, dass die Daten, wie der OP erwartet.
Wieder du meinst, 22, richtig? ;p
ja, immer wenn ich sage 26, meine ich 22 😀
dies ist nicht das, was der OP fordert. Dies beantwortet die Frage nicht.
InformationsquelleAutor Rajesh Chamarthi
etwas wie dieses:
InformationsquelleAutor compcobalt
MINUS funktioniert nach dem gleichen Prinzip wie bei den Mengenoperationen. Angenommen, wenn Sie A und B,
A = {1,2,3,4}; B = {3,5,6}
dann A-B = {1,2,4}
Wenn A = {1,3,5} und B = {2,4,6}
dann A-B = {1,3,5}. Hier der count(A) vor und nach dem MINUS-Betrieb wird der gleiche sein, wie es enthält keine überlappenden Bedingungen mit Satz B.
Auf ähnliche Weise, kann das Ergebnis gesetzt, die in Abfrage 2 nicht übereinstimmende Bedingungen, mit dem Ergebnis, Abfrage1. Folglich sind Sie immer noch 28 statt 6 Zeilen.
Hoffe, das hilft.
InformationsquelleAutor akzhere
Es gibt den Unterschied Datensätze in der oberen Abfrage nicht enthalten sind, die von der zweiten Abfrage.
In deinem Fall zum Beispiel
A={1,2,3,4,5...28} UND B={29,30}, dann A-B={1,2,3....28}
InformationsquelleAutor NIKHIL