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

位置と位置による順序に従ってランダムな2つのレコード

    position, rand()で並べ替えることができます 各position内でランダムな順序になるように パーティション。次に、変数を使用してpositionのレコードを列挙します パーティション:

    SELECT q_id, position, qtn, level, rn
    FROM (
      SELECT q_id, position, qtn, level,
               @rn := IF(@pos = position, @rn + 1,
                       IF(@pos := position, 1, 1)) AS rn
      FROM (
        SELECT *
        FROM tbl_question     
        WHERE level = '1'
        ORDER BY position, rand() ) a
      CROSS JOIN (SELECT @rn := 0, @pos := 0) AS vars ) b
    WHERE b.rn <= 2  
    ORDER BY position
    

    外部クエリは@rnを使用します 各positionから2つのレコードのみを選択します パーティション。

    デモはこちら



    1. SQLServerデータベースのデータを失うことなくCDC対応テーブルから列を追加または削除する方法-SQLServerチュートリアル

    2. テーブル行の編集GUIを使用してSQLServerテーブルに行を挿入する方法-SQLServer/TSQLチュートリアルパート101

    3. SQLiteで大文字を含む行を見つける3つの方法

    4. MySQLレプリケーションのトラブルシューティング:パート1