aba*_*n99 5 sql common-table-expression
以下帖子有令人信服的理由通常避免select *在SQL中使用 .
在讨论中是使用或不可接受的示例select * 但是我没有看到关于公用表表达式(CTE)的讨论.select *在CTE中使用有任何缺点吗?
例:
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
Run Code Online (Sandbox Code Playgroud)
既然你已经正确地列出了列名cte,我看不出在使用任何伤害select *从cte。
事实上,它可能是使用的正确位置select *,因为没有必要将列列出两次。
除非您不需要使用cte. (即cte查询中使用了 the 中的列,但不在select子句中)在这种情况下,我建议仅列出您需要的列,即使 from 指向 a cte。
请注意,如果它cte本身使用,select *那么您链接到的帖子中列出的所有缺点都适用于它。
我的主要反对意见select *是它通常被懒惰的开发人员使用,他们不考虑*.
注意:我在这里写的所有内容也适用于派生表。