ugrás a tartalomhoz

MySql duplikált sorokból csak egyet

firith · 2007. Aug. 16. (Cs), 16.04
üdv!

Az lenne a kérdésem, hogy lehetne a legszebben megoldani azt, hogy az adatbázisban egyező sorokból(ez egyezőség két oszlop függvényében dől el) csak az egyik jelenjen meg.

például van egy táblám:
id, kulcs1, kulcs2, szam

Szeretném lekérni az összes sort, de a duplikált sorokból csak azt, amelyikben a `szam` mezőben a legnagyobb szám van

Ehhez kérek segítséget!
 
1

group by, max

TeeCee · 2007. Aug. 16. (Cs), 17.00
Csak a teszt kedvéért:
  1. --   
  2. -- Tábla szerkezet: `test`  
  3. --   
  4.   
  5. CREATE TABLE `test` (  
  6.   `id` smallint(6) NOT NULL,  
  7.   `kulcs1` smallint(6) NOT NULL,  
  8.   `kulcs2` smallint(6) NOT NULL,  
  9.   `szam` smallint(6) NOT NULL  
  10. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;  
  11.   
  12. --   
  13. -- Tábla adatok: `test`  
  14. --   
  15.   
  16. INSERT INTO `test` VALUES (1, 12, 24, 100);  
  17. INSERT INTO `test` VALUES (2, 12, 24, 101);  
  18. INSERT INTO `test` VALUES (3, 13, 25, 102);    
Na, ezen az alábbi lekérdezést futtatva:
  1. SELECT * , MAX( szam ) AS groupMax  
  2. FROM `test`  
  3. GROUP BY kulcs1, kulcs2  
Ez jött:
  1. id  kulcs1  kulcs2  szam    groupMax  
  2. 3   13      25          102     102  
  3. 1   12      24          100     101  
Nekem jónak tűnik...
2

nem aggregált mező

Hodicska Gergely · 2007. Aug. 17. (P), 00.11
Nekem jónak tűnik...
Nekem nem. ;) SQL szabvány, hogy a group by kluyulában nem szereplő mezők a select listában csak aggregáló függvények argumentumaként szerepelhetnek. Ha átgondolod, akkor ez tök logikus is. A group by több sort fog össze, melyek között a nem a group by-ben használtak értéke eltér egymástól: ezek közül melyiket adja vissza a DB kezelő? A MySQL persze dönt maga, egy rendes DB kezelő ilyenkor hibát ad (MySQL-nek is van szabványkövető üzemmódja).


Üdv,
Felhő
3

ok,

TeeCee · 2007. Aug. 28. (K), 09.16
de akkor mi a megoldás? Subselect?

Amúgy a MySQL-ben szabványkövető üzemmódot hol lehet bekapcs?

Üdv: TeeCee :o)