Mysql 使用内部联接函数插入值时发生SQL错误

Mysql 使用内部联接函数插入值时发生SQL错误,mysql,inner-join,psi,Mysql,Inner Join,Psi,我的简单SQL代码有问题,因为我只是一个初学者。 我试图检索不同国家的出站成本pal的平均值,并将其写入仓库的每个对应行 我的代码如下: INSERT INTO Warehouse (`inbound-cost-pal`) SELECT cost.`average` FROM Warehouse AS wh INNER JOIN ( SELECT AVG (`warehouse-cost-table`.`outbound-cost-pal`) AS `average`

我的简单SQL代码有问题,因为我只是一个初学者。 我试图检索不同国家的出站成本pal的平均值,并将其写入仓库的每个对应行

我的代码如下:

INSERT INTO Warehouse (`inbound-cost-pal`)
SELECT cost.`average`
FROM Warehouse AS wh
INNER JOIN (
    SELECT  
    AVG     (`warehouse-cost-table`.`outbound-cost-pal`) AS `average`
    FROM    `warehouse-cost-table` 
            )cost
ON wh.`location-tariff-code` = LEFT(cost.`country`,2)
;

我在“on子句”中收到错误消息“Unknown column”cost.country.。

您在选择子查询cost时忘记了country

INSERT INTO Warehouse (inbound-cost-pal)
SELECT cost.average
FROM Warehouse AS wh
INNER JOIN (
    SELECT  
    AVG     (warehouse-cost-table.outbound-cost-pal) AS average,
            country
    FROM    warehouse-cost-table 
            )cost
ON wh.location-tariff-code = LEFT(cost.country,2)
;
如果每个国家都需要一个avg(),那么子查询中还需要一个国家

INSERT INTO Warehouse (`inbound-cost-pal`)
SELECT cost.`average`
FROM Warehouse AS wh
INNER JOIN (
    SELECT   `warehouse-cost-table`.`country`,
    AVG(`warehouse-cost-table`.`outbound-cost-pal`) AS `average`
    FROM    `warehouse-cost-table` 
    GROUP BY `warehouse-cost-table`.`country`
            ) cost
ON wh.`location-tariff-code` = LEFT(cost.`country`,2)
;
否则,如果您不需要国家/地区的avg(),而需要整个avg,则可以使用交叉连接而不是内部连接

INSERT INTO Warehouse (`inbound-cost-pal`)
SELECT cost.`average`
FROM Warehouse AS wh
CROSS JOIN (
    SELECT  
    AVG(`warehouse-cost-table`.`outbound-cost-pal`) AS `average`
    FROM    `warehouse-cost-table` 
            ) cost
  ;

你应该避免在函数名和括号之间留空格。。AVG()

更新您的问题添加适当的数据样本和预期结果…在表/列标识符中包含“-”是一个非常糟糕的主意