Mysql根据另一列更改一个列值

时间:2015-10-24 13:05:29

标签: php mysql mysqli

我有一个自动增量列。我想根据此自动增量列值更改另一列的值。

another column value  ==> (auto increment column value/3) +1

我如何通过查询来做到这一点?有可能吗?

我想在新创建行时这样做。

3 个答案:

答案 0 :(得分:3)

新的(id/3)+1)值是否会改变?

从问题来看,数据仅在插入时存在。自动增量列永远不会改变,因为 是主键,我只会在它上面加入,如果你必须加入它,或者如果它是将来会改变。您可以在插入后从SELECT查询中获取此派生值。

SELECT id, ((id/3)+1) as derived value from table;

答案 1 :(得分:1)

这是"派生"值,您应该考虑不存储此值,而是在每次需要时在PHP代码中计算它。这是一篇文章,您可以在其中找到有关何时存储派生值的进一步说明:Storing “derived” values vs calculating them on extraction

@Octopi解决方案可以解决您的问题。

答案 2 :(得分:0)

尝试以下方法:

INSERT INTO your_table (your_column) 
    SELECT (MAX(auto_increment_column) / 3) + 2 FROM your_table;

修改

如果要根据值的数量计算列,请使用:

INSERT INTO your_table (your_column) 
    SELECT (COUNT(*) / 3) + 2 FROM your_table;

编辑2

您可以使用以下方法完成相同的操作:

INSERT INTO your_table (your_column) VALUES ( 
    (SELECT (MAX(aa.auto_increment_column) / 3) + 2 FROM your_table AS aa) 
);

编辑3

对于更多列,您可以使用以下内容:

INSERT INTO your_table (your_column, some_other_column) VALUES ( 
    (SELECT (MAX(aa.auto_increment_column) / 3) + 2 FROM your_table AS aa), some_other_column 
    );

您可以在此处找到更多信息: Select from same table as an Insert or Update

实际上你必须添加+2,因为你的规则是1,+1是增加MAX(id)。