sql >> データベース >  >> RDS >> Mysql

mysqlupdateセルフテーブルのしくみ

    行を識別するための一意の列はありません。つまり、JOIN おそらくあなたが思うようにもっと多くの行を更新するでしょう。

    代わりに、おそらくそのようなものが必要です:

    UPDATE tem AS t1 JOIN (SELECT a, MIN(b) AS m FROM tem GROUP BY a) AS t2
    USING (a)
    SET t1.b = t2.m;
    

    http://sqlfiddle.com/#!2/c6a04/1 を参照してください。

    NULLを持つ行のみを更新する場合 列b 、これはWHEREの問題です 条項:

    CREATE TABLE tem(a INT,b INT);    
    INSERT INTO tem VALUES(1,2),(1,1),(1,NULL),(2,3);
    
    UPDATE tem AS t1 JOIN (SELECT a, MIN(b) AS m FROM tem GROUP BY a) AS t2
    USING (a)
    SET t1.b = t2.m
    WHERE t1.b IS NULL;
    

    http://sqlfiddle.com/#!2/31ffb/1 を参照してください。



    1. Django ORMのクエリによってグループ化された注釈付きフィールドの合計の最大値を計算しますか?

    2. MySqlポータブルバージョン

    3. 'SQLSTATE [HY093]:無効なパラメーター番号:バインドされた変数の数がトークンの数と一致しません'

    4. データベース内の永続化された日付が取得された日付と等しくない