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

Která pole řádku jsou vrácena při seskupování pomocí MySQL?

Které ID bude vráceno (1, 2 nebo 3)?

Odpověď:Server vybere pro všechny záznamy, které mají stejný název, id, které chce (s největší pravděpodobností nejrychleji načíst, což je nepředvídatelné). Chcete-li citovat oficiální dokumentaci:

Mnohem více informací v tomto odkazu .

Jaké id bude tento dotaz OBJEDNAT BY (Stejné jako je vráceno? ... viz otázka 1)?

Nemá smysl zjišťovat, v jakém pořadí budou načtená data vrácena, protože nemůžete předvídat výsledek, kterého dostanete. Je však velmi pravděpodobné, že dostanete výsledek seřazený podle nepředvídatelného sloupce ID.

Můžete určit, které ID bude vráceno/použito pro objednání? např. Vraťte největší id nebo první id ze skupiny GROUP.

V tuto chvíli byste měli předpokládat, že nemůžete. Přečtěte si znovu dokumentaci.

Ještě jasnější:Nemůžete předvídat výsledek nesprávně použité klauzule GROUP BY. Hlavním problémem MySQL je, že vám umožňuje používat ji nestandardním způsobem, ale musíte vědět, jak tuto funkci využít. Hlavním bodem za tím je seskupení podle polí, o kterých víte, že budou vždy stejná. EG:

SELECT id, name, COUNT( * ) AS frequency
FROM table
GROUP BY id

Zde znáte name bude jedinečné jako id funkčně určuje name . Výsledek, který znáte, je tedy platný. Pokud byste seskupili také podle názvu, tento dotaz by byl standardnější, ale v MySQL bude fungovat o něco hůře.

Jako poslední poznámku vezměte v úvahu, že podle mých zkušeností jsou výsledky v těchto nestandardních dotazech pro vybraná a neseskupená pole obvykle ty, které byste získali použitím GROUP BY a poté ORDER BY na tom poli. Proto se tolikrát zdá pracovat. Pokud však budete pokračovat v testování, nakonec zjistíte, že k tomu dochází v 95 % případů. A na toto číslo se nemůžete spolehnout.



  1. Jaký je nejlepší způsob, jak uniknout neformátovým znakům v to_char společnosti Oracle?

  2. Jak odebrat záhlaví sloupců při odesílání výsledků dotazu e-mailem na SQL Server (T-SQL)

  3. Převeďte řetězec oddělený čárkami na pole v PL/SQL

  4. Jak uložit html do databáze mysql