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

Sortowanie SQL nie odbywa się według instrukcji, zawsze używa klucza podstawowego

Wyjaśnienie tego, co się dzieje :

Wykonujesz GROUP BY na staff.department , jednak Twój SELECT lista zawiera 2 niegrupujące kolumny staff.workerID, staff.name . W standardowym sql jest to błąd składni, jednak MySql na to pozwala, więc twórcy zapytań muszą się upewnić, że sami radzą sobie z takimi sytuacjami.

Odniesienie:http://dev.mysql.com /doc/refman/5.0/en/group-by-handling.html

Począwszy od MySQL 5.1 niestandardową funkcję można wyłączyć, ustawiając flagę ONLY_FULL_GROUP_BY w trybie sql_mode:http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_only_full_group_by

Jak naprawić :

select staff.workerID, staff.name, staff.department, staff.salary
from staff
join (
  select staff.department, max(staff.salary) AS biggest
  from staff
  group by staff.department
) t
on t.department = staff.department and t.biggest = staff.salary

W zapytaniu wewnętrznym pobierz dział i jego najwyższą pensję za pomocą funkcji GROUP BY. Następnie w zewnętrznym zapytaniu połącz te wyniki z główną tabelą, która da ci pożądane wyniki.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql - wybieranie roku z uniksowego znacznika czasu

  2. Blokujesz bazę danych MySQL, aby tylko jedna osoba mogła uruchomić zapytanie jednocześnie?

  3. Zapytanie MySQL „NIE W” 3 tabele

  4. Jak przechowywać tablicę w mysql?

  5. Programowa aktualizacja zamówień Woocommerce