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

Wybierz n wierszy na grupę w mysql

Masz wiele rozwiązań, a jednym z nich jest użycie left join i możesz to sprawdzić

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

Logika polega na wykonaniu lewego sprzężenia z tą samą tabelą, w której typ jest taki sam, a cena jest mniejsza od innych, a na koniec wykonaj group by zmienność, a następnie użyj count() z koniecznością pokazania liczby rekordów, które chcesz na grupę. Zwróć uwagę, że w mysql masz swobodę grupowania według klauzuli, jak w powyższym zapytaniu, w dowolny sposób, co może zawieść w innych RDBMS.

Teraz masz trochę zamieszania co do alias , w powyższym przykładzie nazwa tabeli to test a w zapytaniu pseudonazwa jest podana jako t1 . Również przy dołączaniu do siebie ważne jest, aby podać unikalne nazwy aliasów dla tej samej tabeli. W powyższym przykładzie ta sama tabela jest połączona ze sobą, więc musimy upewnić się, że nadaliśmy tabelom nazwę aliasu.




  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 MySQL:zapisywanie plików PDF w bazie danych

  2. Jak użyć wartości ciągu/kolumny jako stałej interwału daty mysql (DZIEŃ, MIESIĄC...)?

  3. MySql nie może zrobić kolumny auto_increment

  4. skrypt do konwersji pliku sql zrzutu mysql do formatu, który można zaimportować do sqlite3 db

  5. Czy powinienem trzymać się tylko automatycznej kopii zapasowej AWS RDS lub migawek DB?