1

その行の別のフィールドがテーブル全体で 1 回だけ発生する値を更新する必要があります。次のクエリを作成しましたが、機能しません。どうやってこれを書くのですか?

ありがとう

UPDATE debiteuren_afleveradressen 

            SELECT COUNT(*) as totalCount
            FROM    debiteuren_afleveradressen
            GROUP BY bedrijf

        SET nummer = 1 WHERE totalCount = 1;
4

3 に答える 3

0

ただの勝手な推測

UPDATE debiteuren_afleveradressen 
SET nummer = 1 WHERE bedrijf IN(SELECT bedrijf FROM
(SELECT  bedrijf FROM debiteuren_afleveradressen 
GROUP BY bedrijf HAVING COUNT(*)=1 )as x)

SQL フィドル

于 2013-10-31T13:55:21.377 に答える
0

これは、あなたが望むもののかなり直接的な翻訳です:

UPDATE debiteuren_afleveradressen
    SET nummer = 1
    WHERE bedrijf in (SELECT bedrijf
                      FROM    debiteuren_afleveradressen
                      GROUP BY bedrijf
                      having count(*) = 1
                     );

しかし、MySQL には奇妙な制限があり、次のように記述する必要があります。

UPDATE debiteuren_afleveradressen
    SET nummer = 1
    WHERE bedrijf in (select bedrijf
                      from (SELECT bedrijf
                            FROM    debiteuren_afleveradressen
                            GROUP BY bedrijf
                            having count(*) = 1
                           ) t
                     );

MySQL は、このタイプのクエリでは少し効率が悪い場合があります。次のように言い換えることをお勧めしjoinます。

UPDATE debiteuren_afleveradressen join
       (SELECT bedrijf, count(*) as TotalCount
        FROM    debiteuren_afleveradressen
        GROUP BY bedrijf
       ) agg
       on agg.bedrijf = debiteuren_afleveradressen.bedrijf and
          TotalCount = 1
    SET nummer = 1;
于 2013-10-31T13:57:14.573 に答える