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

Изберете n реда на група в mysql

Имате много решения и едно от тях е да използвате left join и можете да проверите за това

select t1.* from test t1
left join test t2
on t1.type = t2.type and t1.price > t2.price
group by t1.variety
having count(*) <=1
order by t1.type,t1.price

Логиката е да направите ляво присъединяване със същата таблица, където типът е същият и цената е по-малка от другата и накрая да направите group by разнообразието и след това използвайте count(), като трябва да покажете броя на записите, които искате за група. Имайте предвид, че в mysql имате свободата да имате група по клауза, както в горната заявка по произволен начин, който може да се провали в други RDBMS.

Сега, тъй като имате известно объркване относно alias , в горния пример името на таблицата е test и в рамките на заявката се дава псевдо име като t1 . Също така, когато правите самостоятелно присъединяване, важно е да давате уникални псевдоними за същата таблица. В примера по-горе същата таблица е свързана сама със себе си, така че трябва да се уверим, че сме дали псевдоним за таблиците.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Брой записи в DB PHP

  2. PHP - Добра практика ли е да кеширате MYSQL заявки в txt файл?

  3. MySQL в docker-compose -- достъпът е отказан

  4. Spring data JPA:получаване Не са намерени псевдоними в кортежа с резултати! грешка при изпълнение на персонализирана заявка

  5. Показване на изображения от MySQL база данни в JSF таблица с данни