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

Проблем с Изберете Mysql Condition Group By Order

Ако добавите

SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';

Тогава ще видите защо други RDBMS не позволяват този синтаксис:

  • 3 необобщени колони в SELECT, но една в GROUP BY
  • Колоната ORDER BY не е в GROUP BY/SELECT и не е обобщена

Ако искате да ГРУПИРАТЕ ПО, а не DISTINCT, тогава трябва да ГРУПИРАТЕ ПО всички колона в ИЗБОР

SELECT s.serviceid, s.servicenameit, s.servicenameen 
FROM services s, kpi k, checklist_has_kpi chk 
WHERE s.serviceid=k.serviceid AND k.kpiid=chk.kpiid AND k.inreport='yes' AND chk.checklistid=61 
GROUP BY s.serviceid, s.servicenameit, s.servicenameen

Но тогава нямате chk.order за подреждане по, независимо дали използвате GROUP BY или DISTINCT

Какво ще кажете за това, пълното игнориране на дубликати?

SELECT s.serviceid, s.servicenameit, s.servicenameen 
FROM services s, kpi k, checklist_has_kpi chk 
WHERE s.serviceid=k.serviceid AND k.kpiid=chk.kpiid AND k.inreport='yes' AND chk.checklistid=61 
ORDER BY chk.order ASC

Или това, за да ПОРЪЧАТЕ ПО най-ранната поръчка за 3x services колони

SELECT s.serviceid, s.servicenameit, s.servicenameen 
FROM services s, kpi k, checklist_has_kpi chk 
WHERE s.serviceid=k.serviceid AND k.kpiid=chk.kpiid AND k.inreport='yes' AND chk.checklistid=61 
GROUP BY s.serviceid, s.servicenameit, s.servicenameen
ORDER BY MIN(chk.order)



  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 часовник

  2. Използване на mysqldump за форматиране на едно вмъкване на ред?

  3. Каква е разликата между mysql.createConnection и mysql.createPool в Node.js MySQL модула?

  4. Подреждане по обобщена таблица created_at в Laravel

  5. ЗАМЕНЕТЕ редовете в таблицата на базата данни на mysql с pandas DataFrame