2017-01-06 3 views

Antwort

1

Ändern der = auf ein IN

select top 1 address from tblAdr A where A.pkey in (select b.pkey from tblMachine b where b.ADDRESS_PKEY is null) 

Diese den Fehler beheben sollte jedoch die Logik der Abfrage ist wahrscheinlich fehlerhaft. Sie sind nur hinter einer Zeile (select top 1), jedoch definieren Sie nicht, welche Zeile zuerst ausgewählt werden soll (keine order by Klausel).

2

Die Unterabfrage (die Menge in Klammern) gibt mehr als einen pkey-Wert zurück, der nicht zulässig ist, da ein einzelner Skalarwert erforderlich ist. Wenn Sie, ob ein pkey in tblAdr Streichhölzer Inhalt sind jede der Werte in der Unterabfrage mit der Überprüfung, dann können Sie WHERE A.pkey IN (...) wie folgt verwenden:

SELECT TOP 1 address 
FROM tblAdr A 
WHERE A.pkey IN (SELECT b.pkey FROM tblMachine b WHERE b.ADDRESS_PKEY IS NULL) 
0

Verwenden IN statt = als Unterabfrage mehrere passende Zeilen zurückgibt.

SELECT top 1 address 
FROM tblAdr A 
WHERE A.pkey IN 
    (SELECT b.pkey FROM tblMachine b WHERE b.ADDRESS_PKEY IS NULL 
); 

Verwenden Sie auch immer Top-Abfragen mit Reihenfolge von.

0

Diese Unterabfrage „wählen b.pkey von tblMachine b wo b.ADDRESS_PKEY null ist“ multiple Wert zurückgibt, die Sie mit nicht vergleichen kann „=“ operator.but Sie diese Klausel in versuchen wollen

Verwandte Themen