【发布时间】:2011-11-22 14:19:26
【问题描述】:
所以假设我有这个查询
SELECT COUNT(*) FROM (SELECT * FROM k JOIN j ON k.id = j.aid) k
假设 k 和 j 有两列同名,整个查询将报错列重复错误......
尽管有重复的列,但只需执行 SELECT * FROM k JOIN j ON k.id = j.aid 就可以正常执行......
我知道您可以在子查询中使用 USING 来指定在出现重复的情况下使用哪一列,但是有没有办法指定查询以便它自动绘制特定列(无论是随机还是使用任何规则) 在重复的情况下使用而无需我手动指定它们?
即在不修改子查询(SELECT * FROM k 等)的情况下执行此操作,仅修改超级查询(SELECT COUNT(*) FROM...)并使其尽可能抽象,以便无论使用什么子查询是
【问题讨论】:
-
我同意@JoeStefanelli。使用
SELECT *不是最佳实践之一——即使有时您需要所有的列。但是,对手头的问题进行尝试。您是否尝试过SELECT COUNT(1) ...?您在列歧义上收到错误的一个原因是,当您将子查询包含在内并将其视为表时,您在某种程度上触发了规则的强制执行。类似于我们在创建新表时不能添加两个同名的列。我不确定如何让您的查询不以当前构建的方式抛出错误..