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

繰り返さずにレコードを1つずつ選択する方法

    SELECTは不可分操作であるため、簡単な解決策はないと思います。また、解決する必要のある2つの異なる問題があります。

    表示されている行を繰り返さずに単一の行を選択します。基本的に、最後に表示された行をどこかに保存する必要があります。現在の状態を保存するアプリケーションがある場合は、それを外部変数として保存することもできます。スケッチされたソリューションはMySQL5.0以降で実行されます:

    まず、後で実行されるステートメントを準備し、クエリの初期位置を設定します。

    PREPARE STMT FROM 'SELECT id, name FROM customer LIMIT ?, 1';
    SET @pos = 0;
    

    信頼できる結果を得るために、デフォルトの順序を追加することをお勧めします。単一の行を取得するたびに、

    でステートメントを実行します。
    EXECUTE STMT USING @pos; 
    SELECT count(*) FROM customer INTO @max; 
    SET @pos=(@pos+1)%@max;
    

    もう1つは、ランダムな位置を読み取りたいということです。私が今見ている唯一の解決策は、ランダムに注文された顧客からのコンテンツを保持する一時テーブルを作成するか、0 [email protected] 一時テーブルからメインテーブルの現在位置を読み取ります。 MySQLの外部にアプリケーションがある場合、これを解決するためのより洗練された方法があるかもしれません。



    1. SQLServerの左結合と右結合の違い

    2. UnixtimeをDatetimeSQLに変換する(Oracle)

    3. ADO.NETプロバイダーの「Oracle.ManagedDataAccess.Client」がマシンまたはアプリケーションの構成ファイルに登録されていないか、ロードできませんでした

    4. Mysql:タイプがビットの列をクエリする方法は?