Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

sql server 2008 management studio không kiểm tra cú pháp truy vấn của tôi

Nó đang lấy giá trị của hs_id từ truy vấn bên ngoài.

Hoàn toàn hợp lệ khi có một truy vấn không chiếu bất kỳ cột nào từ bảng đã chọn trong select của nó danh sách.

Ví dụ

select 10 from HotelSupplier where id = 142

sẽ trả về một tập hợp kết quả có bao nhiêu hàng phù hợp với where mệnh đề và giá trị 10 cho tất cả các hàng.

Các tham chiếu cột không đủ tiêu chuẩn được giải quyết từ phạm vi gần nhất trở ra ngoài, vì vậy điều này chỉ được coi là một truy vấn phụ có tương quan.

Kết quả của truy vấn này sẽ là xóa tất cả các hàng khỏi Photo ở đâu hs_id không rỗng miễn là HotelSupplier có ít nhất một hàng trong đó id =142 (và do đó, truy vấn con trả về ít nhất một hàng)

Có thể rõ ràng hơn một chút nếu bạn xem xét tác dụng của việc này là gì

delete from Photo  where Photo.hs_id  in (select Photo.hs_id)

Điều này tất nhiên tương đương với

delete from Photo where Photo.hs_id = Photo.hs_id

Nhân tiện, đây là "lỗi" phổ biến nhất mà cá nhân tôi đã thấy báo cáo sai trên Microsoft Connect. Erland Sommarskog đưa nó vào danh sách mong muốn của mình cho SET STRICT_CHECKS ON



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo Hình ảnh Docker SQL Server tùy chỉnh trên đầu Hình ảnh chính thức

  2. Tìm hiểu khối lượng công việc máy chủ SQL của bạn

  3. SQL Server tương đương với CHẾ ĐỘ XEM TẠO HOẶC THAY THẾ của Oracle

  4. Các kiểu dữ liệu VARCHAR và NVARCHAR trong SQL Server

  5. Sử dụng NEWID () để tạo giá trị duy nhất trong SQL Server