PHP MySQL:更新条件可以复制的增量

时间:2012-10-25 04:13:01

标签: php mysql

我有这样的陈述:

UPDATE `MyTable` 
SET point = point + 1 
WHERE (mySubject = 'MATHEMATICS' AND myGrade = '100') OR 
      (mySubject = 'PHYSICS' AND myGrade = '75') OR 
      (mySubject = 'PHYSICS' AND myGrade = '75')

我希望将表格更新为:

MATHEMATICS | 100 |  1
PHYSICS     | 75  |  2

而不是

PHYSICS     | 75  | 1

存在重复'PHYSICS'条件的原因是因为我从另一个函数获取此信息。 我想知道如果另一个函数通过物理2次,我是否可以将PHYSICS点增加2。

有没有办法在一个连接中执行此操作,而不是调用UPDATE 3次:

UPDATE `MyTable` SET point = point + 1 WHERE mySubject = 'MATHEMATICS' AND myGrade = '100'
UPDATE `MyTable` SET point = point + 1 WHERE mySubject = 'PHYSICS' AND myGrade = '75'
UPDATE `MyTable` SET point = point + 1 WHERE mySubject = 'PHYSICS' AND myGrade = '75'

1 个答案:

答案 0 :(得分:2)

当你对表进行UPDATE时,它只需每行一次。 所以它不会为物理学生成2个更新...

    UPDATE `MyTable` 
SET point = point + 1 
WHERE (mySubject = 'MATHEMATICS' AND myGrade = '100') OR 
      (mySubject = 'PHYSICS' AND myGrade = '75') OR 
      (mySubject = 'PHYSICS' AND myGrade = '75')

此查询说明了SQL .. 更新MyTable WHERE(案例a)或(案例b)或(案例c)

中的所有行

SQL需要数学,并且在案例中它可以并且更新。 然后它需要物理学,在案例b他们可以更新然后sql FINISH因为在桌上没有更多的ROWS ..

你必须做两个单独的更新来完成你的工作..

UPDATE `MyTable` SET point = point + 1 WHERE mySubject = 'MATHEMATICS';
UPDATE `MyTable` SET point = point + 2 WHERE mySubject = 'PHYSICS';

或者您可以使用CASE

UPDATE  `MyTable` SET point = 
        CASE
        WHEN mySubject = 'MATHEMATICS' THEN
                (point+1)
        WHEN mySubject = 'PHYSICS' THEN
                (point+2)
        END