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

MySQLデータベースからランダムに2つの単語を組み合わせる

    次のようなクエリを使用すると、タイプごとに10個のランダムな要素を取得できます。

    select word from YOUR_TABLE where type = 'noun' order by rand() limit 10;
    select word from YOUR_TABLE where type = 'adj' order by rand() limit 10;
    

    次に、次のように、それらをPHPコードにまとめます。

    $phrases = array();
    
    $adj_result  = mysql_query("SELECT word FROM words WHERE type = 'adj' ORDER BY RAND() LIMIT 10");
    $noun_result = mysql_query("SELECT word FROM words WHERE type = 'noun' ORDER BY RAND() LIMIT 10");
    
    while($adj_row = mysql_fetch_assoc($adj_result)) {
      $noun_row = mysql_fetch_assoc($noun_result);
      $phrases[$adj_row['word']] = $noun_row['word'];
    }
    
    print_r($phrases);
    

    このコードはあまり安全ではないことに注意してください(2番目のクエリは常に最初のクエリと同じ数の結果を生成することを前提としています)が、あなたはその考えを理解しています。

    編集:これを実行する必要がある単一のSQLクエリは次のとおりです:

    select t1.word, t2.word 
    from 
      ((select word from YOURTABLE where type = 'adj' order by rand()) as t1), 
      ((select word from YOURTABLE where type = 'noun' order by rand()) as t2) 
    order by rand()
    limit 10;
    

    編集:削除された例




    1. スプリングブートCLIENT_PLUGIN_AUTHが必要です

    2. データ型nvarcharをrealに変換中にエラーが発生しました。

    3. PDOを使用して1回のデータベーストリップに複数のレコードを挿入するにはどうすればよいですか?

    4. 「S-Q-L」または「続編」と発音されますか?