我正在尝试向一个业余爱好者朋友提供一些帮助,使用 SQL Server 经验来帮助使用 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 来组装,但这比这个版本麻烦。
这给出了错误Unknown column 'ah.itemID' in 'on clause'
如果我错误地将错误行更改为... ii.itemID = ib.itemID
,则查询会执行,但结果当然是不正确的(在这种情况下是指数翻倍)。
这是一个带有示例数据的SQL Fiddle 。