Bảng tạm thời không tự động bị loại bỏ khi kết thúc truy vấn, chỉ khi kết nối hiện tại với DB bị ngắt hoặc bạn xóa chúng một cách rõ ràng bằng DROP TABLE #columntable
Kiểm tra sự tồn tại của bảng khi bắt đầu truy vấn hoặc xóa nó ở cuối (tốt nhất là cả hai)
CHỈNH SỬA:Như Matrin đã nói trong nhận xét của mình, đây thực sự là một lỗi phân tích cú pháp. Bạn gặp lỗi tương tự nếu bạn chỉ phân tích cú pháp SQL như khi bạn thực thi nó.
Để kiểm tra điều đó, tôi đã chia nhỏ truy vấn của bạn và thử:
if exists (select 1 from emp where id = 6)
create table #columntable (newcolumns varchar(100))
GO
if not exists (select 1 from emp where id = 6)
create table #columntable (oldcolumns varchar(100))
GO
Trình phân tích cú pháp rất vui với điều đó. Thật thú vị nếu bạn chuyển sang sử dụng bảng không tạm thời, truy vấn ban đầu phân tích cú pháp tốt (tôi nhận ra các vấn đề sẽ tạo ra, tôi chỉ muốn tìm hiểu lý do tại sao truy vấn không phân tích cú pháp).