sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag välja endast den första distinkta matchningen från ett fält i MySQL?

DISTINCT fungerar inte på det sättet måste värdena vara distinkta för alla kolumner som returneras.

Du kan alltid använda en aggregatfunktion på hash funktion och GROUP BY name som returnerar en hash värde för varje namn :

SELECT name, min(hash) hash
FROM my_table 
WHERE name LIKE '%An%' 
GROUP BY name;

Se SQL-fiol med demo .

Obs! genom att använda den aggregerade funktionen med GROUP BY kommer att se till att du alltid returnerar det förväntade värdet för hash kolumn. När du inte GRUPPERAR EFTER eller aggregera objekten i SELECT listan kan du returnera oväntade resultat. (se MySQL-tillägg till GROUP BY )

Från MySQL Docs:



  1. Hur AUTOINCREMENT fungerar i SQLite

  2. IF-funktion i H2 för MySQL-kompatibilitet

  3. NameError:namnet '_mysql' är inte definierat efter inställningen ändras till mysql

  4. Vad är T-SQL?