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

SQL:usuń zduplikowane wartości z wyboru na podstawie 2 pól

W przypadku tego konkretnego pytania max(language) powinno działać, ponieważ d jest mniejsze niż e.

EDIT (rozwiązanie, które się nie zepsuje):

Dodaj max(case language when 'default' then 0 else 1 end)

Edit2 (jeszcze lepiej):

Dodaj max(case language when 'english' then 1 else 0 end) więc nie otrzymasz nawet zduplikowanych wartości, jeśli dodasz więcej języków do swojego in() sekcja

EDYCJA Nr. 2:

Tak jak obiecałem, oto jestem ze świeżym, nowym umysłem w poniedziałek i mam właściwe zapytanie dla twoich potrzeb :-)

Wypróbuj

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;

Wyjaśnienie:GROUP_CONCAT i 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. dlaczego potrzebujemy połączenia lewego i prawego

  2. Jak liczyć pytania użytkowników?

  3. Jak zainstalować i używać MySQLdb dla Pythona 3 w systemie Windows 10?

  4. Jak zapobiec łamaniu się wybranych found_rows w warunkach wyścigu?

  5. Wielowymiarowa tablica PHP MYSQL