Mysql 在JOIN-ON/WHERE中无法识别子查询表别名
我正试图向一位业余朋友提供一些帮助,利用SQL Server的经验帮助他们使用MySQL 他正在制作一个游戏数据库。我为他写了这个问题Mysql 在JOIN-ON/WHERE中无法识别子查询表别名,mysql,outer-join,table-alias,Mysql,Outer Join,Table Alias,我正试图向一位业余朋友提供一些帮助,利用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.item
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
,执行查询,但结果当然是不正确的(在本例中是指数倍)
这是一个包含示例数据的。没有
AH.itemID
,您只能访问子查询的结果。没有AH.itemID
,您只能访问子查询的结果。这是因为您没有在子查询中选择itemID。此外,您选择的是价格列,而不是按它进行聚合。试着替换
LEFT OUTER JOIN (SELECT price, COUNT(*) as stock
FROM auction_house
GROUP BY itemID) as AH on ii.itemID = AH.itemID
与
这是因为您没有在子查询中选择itemID。此外,您选择的是价格列,而不是按它进行聚合。试着替换
LEFT OUTER JOIN (SELECT price, COUNT(*) as stock
FROM auction_house
GROUP BY itemID) as AH on ii.itemID = AH.itemID
与
…嗯,看不见森林就看不见树木…嗯,看不见森林就看不见树木。这太明显了。我变得如此专注,错过了显而易见的事情。谢谢你的新鲜眼光,太明显了。我变得如此专注,错过了显而易见的事情。谢谢你的新眼光。