2016-11-13 98 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

相關問題