Điều này sẽ hoạt động nếu một bảng trong truy vấn bên ngoài có cột của tên đó. Điều này là do các tên cột từ truy vấn bên ngoài có sẵn cho truy vấn con, và bạn có thể có ý định có ý nghĩa để chọn một cột truy vấn bên ngoài trong danh sách truy vấn con của bạn.
Ví dụ:
CREATE TABLE #test_main (colA integer)
CREATE TABLE #test_sub (colB integer)
-- Works, because colA is available to the sub-query from the outer query. However,
-- it's probably not what you intended to do:
SELECT * FROM #test_main WHERE colA IN (SELECT colA FROM #test_sub)
-- Doesn't work, because colC is nowhere in either query
SELECT * FROM #test_main WHERE colA IN (SELECT colC FROM #test_sub)
Như Damien quan sát, cách an toàn nhất để bảo vệ mình khỏi này không-quá-rõ ràng "Gotcha" là để có được vào các thói quen của đủ điều kiện tên cột của bạn trong subquery:
-- Doesn't work, because colA is not in table #test_sub, so at least you get
-- notified that what you were trying to do doesn't make sense.
SELECT * FROM #test_main WHERE colA IN (SELECT #test_sub.colA FROM #test_sub)
Nguồn
2011-02-22 10:31:10
Điều này sẽ cho bạn một lỗi * Cú pháp không chính xác gần từ khóa 'TỪ'. * –
@astander: Tôi đồng ý, nó sẽ đưa ra một lỗi, nhưng nó không phải là –
Xin lỗi, ý tôi là nếu tên cột thực tế là ' Cột'. –