只有当所有列字段都是=某事时,mySQL才会更新所有列字段

时间:2016-11-13 23:52:17

标签: mysql phpmyadmin

很抱歉,如果这一点不明确,但我会尽力使其尽可能清楚。

所以基本上我想更新所有列记录,如果所有列记录都是=某事。

例如:

Name   id  Col1  Col2
Row1   1    6     1
Row2   2    2     1
Row3   3    9     1
Row4   4    16    1

如果所有Col2记录= 1,则将它们全部设置为= 2

所以表格会更新到这个:

Name   id  Col1  Col2
Row1   1    6     2
Row2   2    2     2
Row3   3    9     2
Row4   4    16    2

但如果表格是这样的:

Name   id  Col1  Col2
Row1   1    6     1
Row2   2    2     1
Row3   3    9     1
Row4   4    16    2

没有什么会改变,因为并非Col2的所有记录都是= 1。

我有这个代码,我知道为什么它不能按照我想要的方式工作,但我没有足够的知识来解决它:

UPDATE test as test, 
(
    SELECT test.Col2 FROM test WHERE test.Col2 = '1'
) as temp
SET test.Col2 = '2' WHERE temp.id = test.id

提前谢谢。

1 个答案:

答案 0 :(得分:1)

有点棘手。而不是使用简单的比较,你将不得不使用计数

UPDATE test, 
(SELECT COUNT(*) as c1 FROM test where Col2=1) as a1, 
(SELECT COUNT(*) as c2 FROM test) as s2 
SET test.Col2=2 WHERE c1=c2;