Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Brak T-SQL (wybierz nie działa (zgodnie z oczekiwaniami)

NOT IN nie zachowuje się zgodnie z oczekiwaniami, gdy na liście znajduje się NULL wartości.

W rzeczywistości, jeśli jakiekolwiek wartości są NULL , wtedy żadne wiersze nie są zwracane. Pamiętaj:w SQL NULL oznacza „nieokreśloną” wartość, a nie „brakującą wartość”. Tak więc, jeśli lista zawiera jakiekolwiek NULL wartość to może być równe wartości porównawczej.

Tak więc customerid musi być NULL w orders tabela.

Z tego powodu zdecydowanie zalecam, aby zawsze używać NOT EXISTS z podzapytaniem zamiast NOT IN .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grupuj i rejestruj wartości dla każdego rekordu w SQL

  2. Różnica między wyzwalaczami FOR i AFTER?

  3. Jak mogę przekonwertować dane geometrii na dane geograficzne w MS SQL Server 2008?

  4. Pętla If w instrukcji „Then” instrukcji Case w SQL Server 2008

  5. Czy Entity Framework obsługuje ApplicationIntent=Tylko do odczytu w parametrach połączenia SQLClient?