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

Grupuj według MySQL i zamawiaj według

Prostym rozwiązaniem jest umieszczenie zapytania w podselekcji za pomocą instrukcji ORDER pierwszy i zastosowanie GROUP BY później :

SELECT * FROM ( 
    SELECT `timestamp`, `fromEmail`, `subject`
    FROM `incomingEmails` 
    ORDER BY `timestamp` DESC
) AS tmp_table GROUP BY LOWER(`fromEmail`)

Jest to podobne do korzystania z połączenia, ale wygląda znacznie ładniej.

Używanie kolumn nieagregujących w SELECT z klauzulą ​​GROUP BY jest niestandardowe. MySQL generalnie zwróci wartości pierwszego znalezionego wiersza i odrzuci resztę. Wszelkie klauzule ORDER BY będą miały zastosowanie tylko do zwróconej wartości kolumny, a nie do odrzuconych.

WAŻNA AKTUALIZACJA Wybieranie kolumn nieagregatowych używanych do pracy w praktyce, ale nie należy na nich polegać. Zgodnie z dokumentacją MySQL „jest to przydatne przede wszystkim wtedy, gdy wszystkie wartości w każdej niezagregowanej kolumnie, której nie wymieniono w GRUPA WEDŁUG, są takie same dla każdej grupy. Serwer może swobodnie wybrać dowolną wartość z każdej grupy, więc o ile nie są takie same, wybrane wartości są nieokreślone ”.

Od 5.7.5 ONLY_FULL_GROUP_BY jest domyślnie włączone, więc kolumny nie zagregowane powodują błędy zapytań (ER_WRONG_FIELD_WITH_GROUP)

Jak @mikep wskazuje poniżej, rozwiązaniem jest użycie DOWOLNA_WARTOŚĆ() od 5.7 i nowszych

Zobaczhttp://www.cafewebmaster.com/mysql-order-sort-group https://dev.mysql.com/doc /refman/5.6/en/group-by-handling.html https://dev.mysql.com/doc /refman/5.7/en/group-by-handling.html https://dev.mysql.com /doc/refman/5.7/pl/miscellaneous-functions.html#function_any-value



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyj relacyjnych baz danych MySQL w Fedorze 12

  2. Jak włączyć mysqlnd dla php?

  3. MySQL Query GROUP BY dzień / miesiąc / rok

  4. Brak rozszerzenia mysqli, phpmyadmin nie działa

  5. PHP PDO i MySQLi