NICHT IN der Bedingung in SQL
Kann mir jemand sagen, die genaue syntax für die NICHT IN der Bedingung in SQL auf zwei Säulen.
Dies ist meine Abfrage in VBA geschrieben.
strNewSql = "SELECT distinct(tblRevRelLog_Detail.PartNumber), tblRevRelLog_Detail.ChangeLevel, tblRevRelLog_Detail.ID FROM tblRevRelLog_Detail LEFT JOIN tblEventLog ON tblRevRelLog_Detail.PartNumber = tblEventLog.PartNumber"
strNewSql = strNewSql & " WHERE (tblEventLog.PartNumber) Not In(SELECT tblEventLog.PartNumber FROM tblEventLog WHERE tblEventLog.EventTypeSelected = 'pn REMOVED From Wrapper') AND tblEventLog.TrackingNumber = """ & tempTrackingNumber & """ AND tblEventLog.TrackingNumber = tblRevRelLog_Detail.RevRelTrackingNumber;"
Möchte ich dies ändern, sub-Abfrage, wie es sollte gelten, die auf der Kombination von zwei Spalten wie folgt:
strNewSql = "SELECT tblRevRelLog_Detail.PartNumber, tblRevRelLog_Detail.ChangeLevel, tblRevRelLog_Detail.ID FROM tblRevRelLog_Detail LEFT JOIN tblEventLog ON tblRevRelLog_Detail.PartNumber = tblEventLog.PartNumber"
strNewSql = strNewSql & " WHERE (((tblEventLog.PartNumber, tblEventLog.PartNumberChgLvl) Not In(SELECT tblEventLog.PartNumber,tblEventLog.PartNumberChgLvl FROM tblEventLog WHERE tblEventLog.EventTypeSelected = 'pn REMOVED From Wrapper') AND tblEventLog.TrackingNumber = """ & tempTrackingNumber & """ AND tblEventLog.TrackingNumber = tblRevRelLog_Detail.RevRelTrackingNumber);"
Aber das wird nicht funktionieren.....
- Was Sie tun müssen, ist die Kombination der Spalten zusammen nicht funktioniert oder die Daten nicht in Spalte?
- Was meinst du mit den zwei Spalten?
- HLGEM,Kombination von zwei Spalten..
- Es würde helfen, zu wissen, welche version von MS-Access, die Sie verwenden, wie, die beeinflussen könnten, die Antwort.
- MS - Access 2003
- Ich kann nicht glauben, eine einzige version Unterschied für diese Art von einfachen SQL in eine beliebige version von Access zurück zu Version 2. Das einzige, was einen Unterschied machen kann, wenn Sie in A2003 oder höher und SQL 92-Modus eingeschaltet, aber ich glaube nicht einmal, dass würde einen Unterschied machen (es sei denn, Sie verwenden eine SQL-92-Schlüsselwort, von denen keiner springen bei mir). Kurz gesagt, ich glaube nicht, dass die Access-version macht den geringsten Unterschied, also alles, was in dieser Abfrage immer unterstützt wurde.
- Haben Sie in Betracht gezogen, nur fügen Sie die beiden Tabellen über die beiden Felder, die Sie wollen, zu entsprechen? Ich sehe keinen Grund warum das nicht funktionieren würde. Das ist, ich weiß einfach keinen Grund sehen, um zu springen, um eine Unterabfrage hier. Wo sind Sie mit der Ergebnismenge? Ist es in einer form, die muss bearbeitet werden? Wenn dem so ist, müssen Sie die VERKNÜPFUNG in der Unterabfrage und wieder Ihre Haupt-Tabelle PK-Feld als SELECT in der Unterabfrage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht verwenden
IN
mit mehr als einer Spalte, aber Sie können in der Regel erzielen Sie den gleichen Effekt mitEXISTS
:Allgemeine syntax:
Artikel kann
einer Liste der Elemente, --
(4,5,3,5,2)
oder('243','3','cdds')
oder jeden anderen Datentyp.Oder eine select-Anweisung
(select hatefulthings from table)
Neben 6 Jahre später
Alle wichtigen Plattformen unterstützen Tupeln mit NICHT, zum Beispiel
In diesem Beispiel wählen wir alles aus der employee-Tabelle, wobei die Tupel aus Mitarbeiter-id und Datum sind nicht in einer Tabelle mit Tage Urlaub.
Ihre Frage ist ein wenig unklar. Ist es das, was Sie brauchen?
Wird dies zeigen Sie alle Datensätze, in denen der Suchbegriff ("Schmidt") ist weder der Vorname noch der Nachname-Spalte.
Vielleicht meintest du
Dies ist zulässig unter Oracle - nicht sicher über SQL-Server.
Teilen und genießen.
Ich sah, wo Sie angegeben haben, war dies für den Zugang
Column1 & Column2
zählt als eine Spalte, aber ich denke, dass dies möglicherweise ein chancy Ansatz, wenn beide Spalten sind numerisch.Smith & Null
Ergebnis wäre das gleiche wieNull & Smith
und würde passen, aber es wäre nicht eine entsprechende match. Davon abgesehen, dass diese Lösung nicht verwenden können, den Indizes, es scheint wie eine komplette nicht-starter zu mir.Es ist nicht klar, was Sie Fragen, aber ich nehme an, dass Sie möchten, um eine NICHT-Bedingung basiert auf zwei Spalten statt nur einer.
Als ein Beispiel, können sagen, Sie haben eine Spalte mit dem Namen F_Name und anderen genannt L_Name (beide variabel in der Größe), und die, die Sie ausschließen möchten bestimmte Kombination dieser Namen aus einer anderen Tabelle, das hat Sie schon kombiniert als NAMEN. In diesem Fall, Sie könnten dies tun:
Das Haupt-Problem bei dieser Abfrage ist, dass Sie bekommen muss die Formatierung genau richtig, so dass Sie sich exakt entsprechen.
Wenn Sie sind den Umgang mit einer Kombination der Felder mit unterschiedlichen Datentypen, wie numerische und Zeitstempel, dann verwenden Sie eine der conversion-Befehle (DEZIMAL, INTEGER, CHAR, SUBSTR ...) zur Verfügung, um zu konvertieren, um text gleich und dann passen Sie es entsprechend.