使用当前行值mysql更新多行

时间:2012-02-22 15:04:58

标签: php mysql

我不知道标题是否清楚,但我会在这里解释一下。我们的数据库有数千条记录,并且这些表中有几个日期时间列。我们必须使用unix_timestamp移动到int,但我无法在MySQL中找出更新这些字段的查询。

假设我有一个简单的表格,其中包含以下字段:

user_table :
    id : int,
    name : string,
    date_joined : datetime;

要将所有这些date_joined字段更改为int,我想添加一个int列并将日期作为int复制到新列中,然后删除旧列并重命名我的新列可能是一个解决方案。我构建了一个小PHP脚本,然后我的脚本将进行数千次MySQL查询,这是很长的。我的脚本会运行如下查询:

UPDATE user_table SET date_joined_int=UNIX_TIMESTAMP(date_joined) where id = 1
...

使用一个MySQL查询可以做到这一点吗?

3 个答案:

答案 0 :(得分:0)

你真是太近了。只需删除WHERE子句即可更新单个查询中的所有行。

UPDATE user_table 
    SET date_joined_int = UNIX_TIMESTAMP(date_joined)

答案 1 :(得分:0)

如果删除WHERE子句,UPDATE将应用于表格中的所有行。

UPDATE user_table SET date_joined_int=UNIX_TIMESTAMP(date_joined)

答案 2 :(得分:0)

你没错,你应该添加新的INT

ALTER TABLE user_table ADD date_joined_int INT(11) not null;

转换日期

UPDATE user_table SET date_joined_int = UNIX_TIMESTAMP(date_joined);

最后删除date_joined列,并将date_joined_int重新归结为date_joined