所以假设我有这个查询
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
,但执行{{1}}会很好,尽管有重复的列......
我知道您可以在子查询中使用USING来指定在重复的情况下使用哪个列,但是有没有办法指定查询以便它自动映射特定列(无论是随机还是使用任何规则) )在没有我必须手动指定的情况下使用重复的情况?
即在不修改子查询(SELECT * FROM k等)的情况下执行此操作,并仅修改超级查询(SELECT COUNT(*)FROM ...)并使其尽可能抽象,以便无论是什么子查询是
答案 0 :(得分:3)
没有
此示例中最简单的解决方案是在子查询中将*替换为1。替换单个角色真的有问题吗?
答案 1 :(得分:1)
为什么不
SELECT COUNT(*) FROM k JOIN j ON k.id = j.aid
子查询中的重复列也发生在其他RDBMS中。
就个人而言,为什么两个表中都有id列?而不是孩子,杰德。每个表这可能是DRY和OO思考,但对SQL来说完全没用。查看"Why is naming a table's Primary Key column “Id” considered bad practice?"
处的战斗