Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Połącz losowo dwa słowa z bazy danych MySQL

Możesz uzyskać 10 losowych elementów na typ za pomocą takich zapytań:

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;

a następnie umieść je razem w swoim kodzie PHP, tak jak poniżej:

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

Pamiętaj, że ten kod nie jest zbyt bezpieczny (zakłada, że ​​drugie zapytanie zawsze daje co najmniej tyle samo wyników, co pierwsze), ale rozumiesz, o co chodzi.

Edycja:Oto pojedyncze zapytanie SQL, które powinno to zrobić:

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;

EDYCJA:usunięty przykład




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy MySQL zezwala na wywołania zwrotne w języku C, dzięki którym w przypadku zmiany mogę zostać powiadomiony?

  2. Apostrofy i dwukropki w ładnych linkach

  3. Problem z zasięgiem MySql ze skorelowanymi podzapytaniami

  4. jak wyczyścić / opróżnić pulę buforów mysql innodb?

  5. Jak wstawić NULL w mysql, zwłaszcza INT dataType?