sql >> Database teknologi >  >> RDS >> Mysql

SQL:Fjern duplikerede værdier fra et udvalg baseret på 2 felter

Til dette specifikke spørgsmål max(language) burde virke, fordi d er mindre end e.

EDIT (Løsning der ikke går i stykker):

Tilføj max(case language when 'default' then 0 else 1 end)

Edit2 (Endnu bedre):

Tilføj max(case language when 'english' then 1 else 0 end) så du vil ikke engang få dobbelte værdier, hvis du tilføjer flere sprog til din in() afsnit

EDIT Nr. 2:

Som jeg lovede, er jeg her med et friskt nyt mandag morgen sind og fik den rigtige forespørgsel til dine behov :-)

Prøv

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;

Forklaring:GROUP_CONCAT og LTRIM




  1. Filtrering på et alias i mysql

  2. Sporing af databaseændringer ved hjælp af arbejdsmappekildekontrol

  3. if(!isset($_SESSION['brugernavn'])), der får brugere til at blive omdirigeret fra verify_login_form.php tilbage til index.php

  4. SQL Server Database Server Hardware Upgrade Case Study