Bài đăng sau đây có lý do thuyết phục để tránh sử dụng select *
trong SQL.Thực hành tốt nhất: Chọn * trên CTE
Why is SELECT * considered harmful?
Trong các cuộc thảo luận là ví dụ về khi nó được hoặc là không thể chấp nhận được để sử dụng select *
Tuy nhiên tôi không có vẻ thảo luận về biểu thức bảng chung (CTE). Có bất kỳ hạn chế nào khi sử dụng select *
trong CTE không?
Ví dụ:
WITH CTE1 AS
(
SELECT Doc, TotalDue
FROM ARInvoices
WHERE CustomerName = 'ABC'
UNION
SELECT Doc, - TotalDue
FROM ARInvoiceMemos
WHERE CustomerName = 'ABC'
)
select * from CTE1
UNION
Select 'Total' as Doc, sum(TotalDue)
FROM CTE1
Tôi tin rằng trường hợp tương tự áp dụng cho các CTE cho cùng một lý do được nêu trong câu hỏi mà bạn đã liên kết. Tôi không thể tìm thấy bất kỳ tài liệu nào để chứng minh điều này. –
Không có hạn chế ở đây. Điều tương tự cũng áp dụng cho các bảng có nguồn gốc 'select * từ (chọn a, b, c từ some_table) như t' –