我想借一些帮助给一个爱好者的朋友,用sqlserver的经验来帮助mysql。
他在做游戏数据库。我为他写了这个问题
SELECT ib.itemid, ii.realname as name, ib.stackSize,
IFNULL(ah.price, '-') as price, ah.stock
FROM item_basic ib
LEFT OUTER JOIN item_info as ii ON ii.itemID = ib.itemID
LEFT OUTER JOIN (SELECT price, COUNT(*) as stock
FROM auction_house
GROUP BY itemID) as AH on ii.itemID = AH.itemID -- erring line
ORDER BY ii.realname
以及一个使用from cluse而不是join来组装子查询的版本,但是这个版本没有这个版本那么麻烦。
这将在“on子句”中给出错误未知列“ah.itemid”
如果我错误地将错误行改为 ... ii.itemID = ib.itemID
,则执行查询,但结果当然是不正确的(在本例中是指数倍)。
下面是一个sql摆弄示例数据。
2条答案
按热度按时间nnt7mjpx1#
根本没有
AH.itemID
,只能访问子查询的结果。yc0p9oo02#
这是因为您没有在子查询中选择itemid。另外,选择price列时不按它进行聚合。尝试替换
具有