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

MySQL GROUP BY с предпочитание

Можете да използвате обобщена функция за получаване на по-„подходящия“ запис за всеки имейл.
Мисля, че тази заявка ще ви даде най-добрия резултат:

SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
FROM table
GROUP BY emailAddress

Той ще върне най-богатия ред за всеки имейл адрес, но всички данни ще бъдат върнати в рамките на един низ (разделен със запетая), така че ще трябва да го анализирате по някакъв начин.
Ако производителността не е проблем и искате да получите нормален набор от резултати в отделни полета, тогава можете да използвате едно:

SELECT table.emailAddress, fullName, address1, address2 
FROM 
table JOIN 
    (SELECT emailAddress, 
       max(concat(fullName,address1,address2)) as bestRowInOneString
    FROM table
    GROUP BY emailAddress
    ) bestRowsSubQuery 
 ON 
   concat(table.fullname,table.address1,table.address2) = bestRowsSubQuery.bestRowInOneString
   AND table.emailAddress = bestRowsSubQuery.emailAddress


  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. mysql бавен при първата заявка, след това бърз за свързани заявки

  3. Как да създадете база данни на MySQL от дъмп файл в скрипт за очакване/TCL?

  4. MySQL SELECT LAST_INSERT_ID() за комбиниран ключ. Възможно ли е?

  5. изграждане на ролеви приложения