重复的mysql使用非现有列

时间:2016-12-01 15:57:34

标签: mysql

SGBD是MySQL。 我在A列上有一个带有UNIQUE索引的表。 重复时,我想应用此规则:

$basePrices = get_pages(array(
    'meta_key' => 'basePrice'
));

问题? nb_occurence = nb_occurence + 1, average_amount = IF(average_amount IS NULL, VALUES(amount), (average_amount * nb_occurence + VALUES(amount)) / (nb_occurence + 1) ), min_amount = IF(VALUES(amount) < min_amount, VALUES(amount), min_amount), max_amount = IF(VALUES(amount) > max_amount, VALUES(amount), max_amount) 不是现有列。 我插入的数据:我有一组非常大的数据,在A列(UNIQUE INDEX)上有很多碰撞。我将它们全部插入表中,留给MySQL计算。在这组数据中,每行都有一个amount列。我希望MySQL使用我尝试插入的数据自行更新amount个相对列。

我试过了:

amount

它告诉我:INSERT INTO `myTable`(`A`, `amount`) VALUES('foobar', 5) ON DUPLICATE KEY UPDATE nb_occurence = nb_occurence + 1, average_amount = IF(average_amount IS NULL, VALUES(amount), (average_amount * nb_occurence + VALUES(amount)) / (nb_occurence + 1) ), min_amount = IF(VALUES(amount) < min_amount, VALUES(amount), min_amount), max_amount = IF(VALUES(amount) > max_amount, VALUES(amount), max_amount)

我在该字段周围尝试了双引号,就像您执行裸SQLSTATE[42S22]: Column not found: 1054 Unknown column 'amount' in 'field list'但SQL语法错误一样。

我敢打赌,有一种方法可以在SQL中正确地做到这一点!

当然我可以改变表并添加一个无用的SELECT "toto";列,但我希望有更好的方法:)

编辑:创建表语句:

amount

1 个答案:

答案 0 :(得分:1)

试试这个:

INSERT INTO myTable (A, average_amount) VALUES('foobar', 5)
ON DUPLICATE KEY UPDATE 
    nb_occurence = nb_occurence + 1,
    average_amount = IF(average_amount IS NULL, VALUES(average_amount), 
        (average_amount * nb_occurence + VALUES(average_amount)) / (nb_occurence + 1)),
    min_amount = IF(VALUES(average_amount) < min_amount, VALUES(average_amount), min_amount),
    max_amount = IF(VALUES(average_amount) > max_amount, VALUES(average_amount), max_amount)

当您列出要插入的列时,问题出在第一行。您引用“amount”,表示您要插入列数量,但myTable表中不存在该列。很自然地,你会看到错误。