sql >> Database >  >> RDS >> Mysql

SQL:verwijder dubbele waarden uit een selectie op basis van 2 velden

Voor deze specifieke vraag max(language) zou moeten werken omdat d kleiner is dan e.

EDIT (oplossing die niet kapot gaat):

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

Edit2 (Nog beter):

Voeg max(case language when 'english' then 1 else 0 end) dus je krijgt niet eens dubbele waarden als je meer talen toevoegt aan je in() sectie

BEWERK Nr. 2:

Zoals ik beloofde, ben ik hier met een frisse nieuwe maandagochtendgeest en heb ik de juiste vraag voor uw behoeften :-)

Probeer

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;

Uitleg:GROUP_CONCAT en LTRIM




  1. AWS RDS-back-upmethoden

  2. 3 methoden om alle indexen voor alle tabellen opnieuw op te bouwen met T-SQL in SQL Server-database

  3. MySQL JOIN met IF-voorwaarden

  4. Hoe to_timestamp() werkt in PostgreSQL