make sql子查询停止抱怨重复的列

时间:2011-11-22 14:19:26

标签: php mysql sql

所以假设我有这个查询

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 ...)并使其尽可能抽象,以便无论是什么子查询是

2 个答案:

答案 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?"

处的战斗