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

ランダムな名前のテーブルからのSQl更新

    クエリは次のとおりです:

    update TestNames t cross join
           rndnames r
        set t.fname = r.FirstName,
            t.lname = r.LastName
        where r.ID = floor(1+(rand()*600));
    

    testnamesの行のみを更新します 式によって選択されたランダムIDがテーブル内のIDと一致する場合。 idですか rndnamesの値 すべて入力されていますか?

    テーブルがそれほど大きくなく、idがある場合 、ここに別のアプローチがあります:

    update TestName t join
           (select t.*,
                   (select id from rndnames order by rand() limit 1) as rndid
            from testname t
           ) tr
           on t.id = tr.id join
           rndnames r
           on t.rndid = r.id
        set t.fname = r.FirstName,
            t.lname = r.LastName;
    

    編集:

    これもうまくいくと思います:

    update TestNames t cross join
           rndnames r
        set t.fname = r.FirstName,
            t.lname = r.LastName
        where r.ID = (select id
                      from rndnames
                      order by rand()
                      limit 1
                     );
    


    1. PreparedStatementは構文エラーをスローします

    2. オフセット制限のあるクエリの選択が遅すぎる

    3. 初心者と中級者のための10のMySQLデータベースインタビューの質問

    4. MySQLでバックアップを行うにはどうすればよいですか?