SQLはランダムな順序で選択しますが、特定の列から重複を選択しないでください

ロバートエイムズ

さて、私は複数の広告を持っている私のデータベースを持っています...しかし私は追加された同じサイトからの複数の広告を持っています....ここに例があります。

ここに画像の説明を入力してください

ご覧のとおり...データベースには異なる2つのリンクがあります...しかし、それらは同じサイトにつながります。私の目標は、ランダムに1つを選択して表示する一方で、他のすべてを選択して表示することです。これが私が現在持っているコーディングです:

<?php
$query = 'SELECT * FROM `ads`';
        $results = mysqli_query($connect, $query) or die(mysql_error());
        while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
            extract($row);
            echo '
                <div class="col-sm-6">
                <div class="card mb-30"><a class="card-img-tiles" href="'.$link.'">
                    <div class="inner">
                      <div class="main-img"><img src="'.$image.'" alt="'.$alt_title.'"></div>
                    </div></a>
                  <div class="card-body text-center">
                    <h4 class="card-title">'.$name.'</h4>
                    '.$about.'
                    <a class="btn btn-outline-primary btn-sm" href="'.$link.'">Check It Out</a>
                  </div>
                </div>
              </div>
            ';
            }
?>

ランダムに選択された丸で囲んだものを表示したいのですが、各セットの両方を表示したくありません。

ここに画像の説明を入力してください

GMB

MySQLのバージョン8.0(またはMariaDB 10.2)以降では、をmainsite使用して同じレコードの各グループから1つのランダムなレコードを選択ROW_NUMBER()し、外部クエリでランダムに並べ替えることができます。ORDER BY RAND()

SELECT * FROM (
    SELECT 
        t.*,
        ROW_NUMBER() OVER(PARTITION BY mainsite ORDER BY RAND()) rn
    FROM ads t
) x WHERE rn = 1
ORDER BY RAND()

以前のバージョンのMySQL / MariaDBでは、これは面倒になります。1つの解決策は、変数のペアを使用してグループを追跡し、行番号を割り当てることです。

SELECT *
FROM (
    SELECT 
        a.*,
        CASE
            WHEN @mainsite != mainsite THEN @rn := 1
            ELSE @rn := @rn + 1
        END rn,
        @mainsite := mainsite
        FROM 
            (SELECT * FROM ads ORDER  BY RAND()) a
            CROSS JOIN (SELECT @rn := 0, @mainsite := NULL) r
        ORDER  BY a.mainsite
    ) s
WHERE  rn <= 1
ORDER  BY RAND()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

大きな行列から複数の小さく重複しない行列をランダムに選択するにはどうすればよいですか?

分類Dev

配列からランダムにフォントを選択し、繰り返さないでください

分類Dev

ランダムに選択しても、最初からいくつかの数字が選択されないのはなぜですか?

分類Dev

リストからランダムにランダムに選択します。選択されていない場合は、別のものを選択してください。

分類Dev

std :: setに基づく順序付けられていない選択の実装では、重複が発生します

分類Dev

JavaScriptの文字列からランダムな文字を選択してください

分類Dev

Pythonで過去2年間からランダムな月を選択してください

分類Dev

文字列で始まらないクラスを選択してください

分類Dev

等しい確率で複数のリストからランダムな値を選択します

分類Dev

選択ソートで正しく順序付けられた配列が表示されないのはなぜですか?

分類Dev

順序で行が見つからない場合、mysqlは1つの行を選択します

分類Dev

重複するメールを選択しないでください

分類Dev

テーブル A の 2 つの列から値のペアを選択し、別のテーブル B にランダムな順序で挿入します

分類Dev

IDが「ランダム」であるものを選択してください

分類Dev

ランダムな番号を選択し、すべての番号が通過するまでそれを再度選択させたくない

分類Dev

列をランダムに選択してから、ランダムに選択されていない残りのデータを表示します

分類Dev

djangoフォームでajaxを使用しているときに、「有効な選択肢を選択してください。これは利用可能な選択肢の1つではありません。」というエラーが表示されます。

分類Dev

DjangoModelFormのエラー。有効な選択肢を選択してください。その選択は有効な選択の1つではありません

分類Dev

Postgres配列の値は等しいが、特定の順序がない場所を選択します

分類Dev

Djangoフォームエラー:有効な選択肢を選択してください。...利用可能な選択肢の1つではありません

分類Dev

sql:名前全体がわからない列を選択してください

分類Dev

パンダのデータフレームから重複していない列を選択する方法

分類Dev

何かと等しくない限り、配列からランダムな文字列を選択します

分類Dev

194481の可能性からランダムな組み合わせを選択してください

分類Dev

Haskellのリストからランダムな要素を選択してください

分類Dev

2つの配列からランダムなアイテムを選択し、アイテムの順序を一致させます

分類Dev

配列の特定の要素からランダムな要素を選択します

分類Dev

パンダ:NaNでない列を選択してください

分類Dev

条件が真になるまで、2つの配列からランダムな整数を選択します

Related 関連記事

  1. 1

    大きな行列から複数の小さく重複しない行列をランダムに選択するにはどうすればよいですか?

  2. 2

    配列からランダムにフォントを選択し、繰り返さないでください

  3. 3

    ランダムに選択しても、最初からいくつかの数字が選択されないのはなぜですか?

  4. 4

    リストからランダムにランダムに選択します。選択されていない場合は、別のものを選択してください。

  5. 5

    std :: setに基づく順序付けられていない選択の実装では、重複が発生します

  6. 6

    JavaScriptの文字列からランダムな文字を選択してください

  7. 7

    Pythonで過去2年間からランダムな月を選択してください

  8. 8

    文字列で始まらないクラスを選択してください

  9. 9

    等しい確率で複数のリストからランダムな値を選択します

  10. 10

    選択ソートで正しく順序付けられた配列が表示されないのはなぜですか?

  11. 11

    順序で行が見つからない場合、mysqlは1つの行を選択します

  12. 12

    重複するメールを選択しないでください

  13. 13

    テーブル A の 2 つの列から値のペアを選択し、別のテーブル B にランダムな順序で挿入します

  14. 14

    IDが「ランダム」であるものを選択してください

  15. 15

    ランダムな番号を選択し、すべての番号が通過するまでそれを再度選択させたくない

  16. 16

    列をランダムに選択してから、ランダムに選択されていない残りのデータを表示します

  17. 17

    djangoフォームでajaxを使用しているときに、「有効な選択肢を選択してください。これは利用可能な選択肢の1つではありません。」というエラーが表示されます。

  18. 18

    DjangoModelFormのエラー。有効な選択肢を選択してください。その選択は有効な選択の1つではありません

  19. 19

    Postgres配列の値は等しいが、特定の順序がない場所を選択します

  20. 20

    Djangoフォームエラー:有効な選択肢を選択してください。...利用可能な選択肢の1つではありません

  21. 21

    sql:名前全体がわからない列を選択してください

  22. 22

    パンダのデータフレームから重複していない列を選択する方法

  23. 23

    何かと等しくない限り、配列からランダムな文字列を選択します

  24. 24

    194481の可能性からランダムな組み合わせを選択してください

  25. 25

    Haskellのリストからランダムな要素を選択してください

  26. 26

    2つの配列からランダムなアイテムを選択し、アイテムの順序を一致させます

  27. 27

    配列の特定の要素からランダムな要素を選択します

  28. 28

    パンダ:NaNでない列を選択してください

  29. 29

    条件が真になるまで、2つの配列からランダムな整数を選択します

ホットタグ

アーカイブ