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

SQL:премахване на дублиращи се стойности от избор въз основа на 2 полета

За този конкретен въпрос max(language) трябва да работи, защото d е по-малко от e.

РЕДАКТИРАНЕ (Решение, което няма да се счупи):

Добавете max(case language when 'default' then 0 else 1 end)

Редактиране 2 (Още по-добре):

Добавете max(case language when 'english' then 1 else 0 end) така че дори няма да получите дублирани стойности, ако добавите още езици към вашия in() раздел

РЕДАКТИРАНЕ № 2:

Както обещах, ето ме с ново съзнание за понеделник сутрин и получих правилното запитване за вашите нужди :-)

Опитайте

SELECT value,
       CASE group_concat(language)
         WHEN 'default' then 'default'
         ELSE LTRIM(REPLACE(group_concat(language SEPARATOR ' '),'default',''))
       END as language,
       externID
FROM demo
WHERE externID = 10
AND   language in ('default','english')
GROUP BY value;

Обяснение:GROUP_CONCAT и LTRIM




  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 DB избира записи със и без умлаути. напр.:'.. където нещо =FÖÖ'

  3. предотвратяване на sql инжекция

  4. Има ли лесен начин за конвертиране на MySQL данни в главни букви?

  5. Пребройте броя на редовете в кошчетата за 30 дни