【发布时间】:2009-10-18 22:56:42
【问题描述】:
这是自从我添加了 Union 后无法运行的查询的快照。
SELECT fin05_usager.idUsager,
(SELECT sum(nombreReputation) as nombreReputation
FROM (SELECT SUM(nombreReputationGagner) as nombreReputation
FROM fin05_usager_reputation
WHERE fin05_usager_reputation.idUsager = fin05_usager.idUsager
GROUP BY fin05_usager_reputation.idUsager
UNION
SELECT SUM(cc_badge.valeurEnReputation) as nombreReputation
FROM cc_badge, fin05_usager_badge
WHERE fin05_usager_badge.idBadge = cc_badge.idBadge
AND fin05_usager_badge.idUsager = fin05_usager.idUsager) as repuUnion
) as repu
FROM fin05_usager
WHERE fin05_usager.idUsager = 6
错误是:#1054 - 'where 子句'中的未知列'fin05_usager.idUsager'
如果我删除 fin05_usager.idUsager 并直接使用“6”,它确实有效。
如果我删除联合并仅使用 2 个选择中的一个,它会起作用(如果我使用 FROM fin05_usager_reputation 或另一个 FROM cc_badge、fin05_usager_badge。
为什么在使用UNION的时候会出现找idUsager的错误,没有union就找不到错误?
架构简化:
fin05_usager: idUsager int(8)
fin05_usager_reputation : idUsager int(8), nombreReputationGagner int(4)
cc_badge : idBadge int(4), valeurEnReputation int(4)
fin05_usager_badge : idUsager int(8), idBadge int(4)
注意:
我不能直接在查询中进行子查询。我必须在 select 的子查询中使用它,因为实际上,查询非常大并且已经包含 Group 等。
【问题讨论】:
-
这里的架构简化了。和查询一样,它是一个简化版本,因为所有内容都包含很多内/左连接。
-
另一种方法是将子选择查询移动到视图中,并将视图连接到当前查询中。
-
如果您不提供整个查询(根据需要进行更改),我们无能为力,但我非常怀疑您无法将我的建议纳入您当前的查询中。跨度>
-
我不能,因为我已经有一个 GROUP BY...
-
MySQL 从 5.0.1 开始支持视图:dev.mysql.com/doc/refman/5.0/en/create-view.html
标签: sql mysql mysql-error-1054