2016-11-13 70 views
1

对不起,如果这不明确,但生病尽我所能让它尽可能清楚。只有在所有列字段都是=东西的情况下,mySQL才会更新所有列字段

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

例如:

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

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

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; 
+0

这工作完美。非常感谢,我真的很感激它。 –

+0

很高兴有帮助 – e4c5

相关问题