sql >> Databasteknik >  >> RDS >> Mysql

Kombinera två ord från en MySQL-databas på måfå

Du kan få 10 slumpmässiga element per typ med frågor som denna:

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;

och sätt sedan ihop dem i din PHP-kod, så här:

$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);

Observera att den här koden inte är särskilt säker (den gör antagandet att den andra frågan alltid ger minst lika många resultat som den första), men du förstår idén.

Edit:Här är en enda SQL-fråga som borde göra det:

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;

EDIT:borttaget exempel




  1. ladda upp bild till mysql-databasen php

  2. Tre enkla SQL Server-prestandavinster

  3. Hur profilerar man PostgreSQL Database?

  4. MySQLdb Python infoga %d och %s