2016-05-19 9 views
0

Ich habe eine Tabelle mit 1256 Datensätze, die aktualisiert werden müssen. Im Grunde ist es eine Anzahl von Datensätzen, die ich einer customObject-Tabelle hinzufügen muss. Ich muss alle Datensätze aktualisieren, die objectNumber = 6 haben, und wenn es Objektnummer 6 nicht habe, muss ich diese Datensätze erstellen.Benötigen SQL-Abfrage, um verschiedene Daten zurückzugeben

Als ich für die 1256 Datensätze in der Datenbank suchen, werden 976 zurück 280 Datensätze Bedeutung haben nicht ‚Objektnummer‘ 6.

Ich finde die Datensätze mit Objektnummer 6 die folgende Abfrage verwenden:

SELECT 
    a.column1, 
    a.column2, 
    a.objectNumber, 
    b.customcolumn 
    b.column2 
FROM table1 a WITH (NOLOCK) 
INNER JOIN table2 b ON a.column2 = b.column2 
WHERE a.column1 IN (<my list of 1256 Ids go here>) 
    AND a.objectNumber = 6 

Ich möchte die 280 Datensätze zurückgeben, die Objekt Nr. 6 NICHT haben. Das Problem mit der Änderung meiner letzten Zeile der Abfrage zu AND a.objectNumber <> 6 bedeutet, dass ich alle Datensätze mit Objekt Nummer 1, 2, 3, 4 usw. zurückgeben und zurückgibt über 3000 Reihen.

+0

Würde das Ergebnis ohne die 'AND a.objectNumber = 6 'die 1256 Datensätze zurückgeben? Also, was meinst du mit ** habe nicht 'objectNumber' 6 **? Ist die Zelle ** null **? * (Um die 280 Datensätze von Nichten zu finden, würde das Erreichen der 1256 Datensätze ausreichen.) * – Edu

+0

Ist es möglich, dass mehrere Zeilen in 'a' oder' b' denselben Wert in Spalte2 haben? Wenn dies der Fall ist, gibt die Abfrage eine Zeile für jede gültige Kombination der Tabellen a und b zurück. –

+1

Ich denke, was Sie wollen, ist 'LINKE VERBINDUNG table2 b ON a.column2 = b.column2 UND a.objectNumber = 6' – mustaccio

Antwort

0

Nicht 100% klar, was für die Suche verfügbar ist, aber es scheint, dass Objektnummer eine ganze Zahl ist und 1,2,3,4, etc, oder 6 als Wert haben kann. Wenn in "etc" Sie NULL bedeuten oder '' ('' wird ein "blank"), dann können Sie dies versuchen:

--wenn NULL oder '' ist eine Option:

und (a.objectNumber ist NULL oder a.objectNumber = ‚‘)

--wenn die 280 Datensätze, die Sie 6 zu aktualisieren versuchen, haben ein bekannter Wert, dann können Sie, dass eliminieren/diese Werte:

und a.objectNumber nicht in (1,2,3,4,5,6, oder welcher Wert auch immer)

Verwandte Themen