sql >> Databáze >  >> RDS >> Mysql

SQL:Jak udržet pořadí řádků pomocí DISTINCT?

distinct klíčové slovo dělá to, co má dělat, vraťte každý jeden řádek s danou hodnotou sloupce. Distinct vám neumožňuje určit který takový řádek bude vrácen a z původního dotazu je jasné, že takové řazení je povoleno (za řádkem s id 429 následuje řádek s id 443).

Chcete-li převzít kontrolu nad tím, jaké řádky budou vráceny, musíte přeformulovat dotaz. Typickým řešením, které uvedu, je použití group by , výběrem sloupce skupiny a požadovaného řádku z každé skupiny, něco ve smyslu

SELECT message.id, MAX(message.created_at) FROM message GROUP BY message.id;

Pokud potřebuji udělat více, použiji tento druh dotazu jako podvýběr ve větším dotazu, případně se připojím k poli id, abych získal více polí z preferovaného řádku, nebo dotaz seřadím určitým způsobem.




  1. Transponujte řádky do záhlaví v MYSQL

  2. Jak převést typ sloupce varchar na typ data bez ztráty dat

  3. Jak SELECT na základě hodnoty jiného SELECT

  4. Transformace funkčnosti třídy Wrapper