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

関連する問題