Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL Изберете един произволен запис от всяка категория

Тази заявка връща всички елементи, присъединени към категории в произволен ред:

SELECT
c.id AS cid, c.category, i.id AS iid, i.name
FROM categories c
INNER JOIN items i ON c.id = i.category
ORDER BY RAND()

За да ограничите всяка категория до една, обвийте заявката в частична GROUP BY :

SELECT * FROM (
    SELECT
    c.id AS cid, c.category, i.id AS iid, i.name
    FROM categories c
    INNER JOIN items i ON c.id = i.category
    ORDER BY RAND()
) AS shuffled_items
GROUP BY cid

Имайте предвид, че когато една заявка има и двете GROUP BY и ORDER BY клауза, групирането се извършва преди сортирането. Ето защо използвах две заявки:първата сортира резултатите, втората групира резултатите.

Разбирам, че тази заявка няма да спечели нито едно състезание. Отворен съм за предложения.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php се регистрира в база данни

  2. Как да разделите mySQL информацията, за да се покаже в HTML колони

  3. Работа с пространствени данни в CakePHP

  4. Намерете следващия месец за дадена дата в mysql

  5. Обяснена функция на MySQL IF().