CREATE TABLE dbo.Product ( Id INT PRIMARY KEY , Name VARCHAR(50) , CategoryID INT ) CREATE TABLE dbo.Category ( Id INT PRIMARY KEY , Name VARCHAR(50) ) INSERT INTO dbo.Category ( Id , Name ) SELECT 1 , 'Cutlary' UNION SELECT 2 , 'Glassware' INSERT INTO dbo.Product ( Id , Name , CategoryId ) SELECT 1 , 'Knife' , 1 UNION SELECT 2 , 'Fork' , 1 UNION SELECT 3 , 'Spoon' , 1 UNION SELECT 4 , 'Tumbler' , 2 UNION SELECT 5 , 'Pint Glass' , 3 --Để ý câu lệnh này SELECT * FROM dbo.Product WHERE CategoryId NOT IN ( SELECT CategtoryId FROM dbo.Category )
Ở câu select cuối cùng, ta thấy cột CategoryID rõ ràng không tồn tại trong table Category, nhưng câu lệnh select vẫn thực thi không có lỗi xảy ra, nguyên nhân là nếu ta viết subquery dạng này, column CategoryID không tồn tại trong table Category, nhưng nó lại tồn tại trong table Product, thì SQL Server chấp nhận điều này, nên không có lỗi.
Kiến thức này tôi đã được thầy minh họa khi học SQL Server ở trung tâm tin học khoa học tự nhiên, nhưng quả thật đã quên khi tôi vô tình đọc lại kiến thức này.
Tham khảo tại đây: http://technet.microsoft.com/en-us/library/ms178050(v=sql.105).aspx
0 comments:
Post a Comment