sql >> Database >  >> RDS >> Mysql

Combineer willekeurig twee woorden uit een MySQL-database

Je kunt 10 willekeurige elementen per type krijgen met vragen als deze:

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;

en voeg ze vervolgens samen in uw PHP-code, zoals zo:

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

Houd er rekening mee dat deze code niet erg veilig is (er wordt aangenomen dat de tweede zoekopdracht altijd minstens zoveel resultaten oplevert als de eerste), maar je begrijpt het idee.

Bewerken:hier is een enkele SQL-query die het zou moeten doen:

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:voorbeeld verwijderd




  1. Hoe een tabel dupliceren met sleutels en andere structuurkenmerken die in MySQL zijn behouden?

  2. Neo4j - Een knooppunt verwijderen met Cypher

  3. Kan geen verbinding maken met MySQL met Sequelize

  4. Wanneer wordt een tijdstempel (automatisch) bijgewerkt?