将行设置为另一行 - MySQL

时间:2011-12-11 15:49:12

标签: mysql

我有这个问题:

 mysql_query("
    UPDATE users SET

    `clicks_yesterday`=`clicks_today`,`clicks_today`=0) 

我的数据库中的结构如下所示:Database Structure

我的问题是,每当我运行上面的查询时,我怎么能这样做,clicks_yesterday得到的是clicks_today的值?

此致

2 个答案:

答案 0 :(得分:1)

你就是这样做的。 SQL中的赋值按遇到的顺序进行评估(例如,left - > right)。但是如果你想完全确定正确分配的东西,那么将它分成两个查询:

UPDATE users SET clicks_yesterday = clicks_today;
UPDATE users SET clicks_today = 0;

答案 1 :(得分:0)

对于MySQL你所写的作品。然而,它在不同的DB上是不同的,因此测试非常重要。

这些是我对这个问题的测试

CREATE TABLE `duals` (
  `one` int(11) DEFAULT NULL,
  `two` int(11) DEFAULT NULL
);

insert into duals values (1, 2);

select * from duals;
+------+------+
| one  | two  |
+------+------+
|    1 |    2 |
+------+------+

update duals set one = two, two = 0;

select * from duals;
+------+------+
| one  | two  |
+------+------+
|    2 |    0 |
+------+------+