Onko mysql:llä mahdollista listata vain 1 tieto taulusta, jossa on samaa tietoa esim. 2 kpl?
Esimerkki:
id: 1
name: Mikko
Lname: Mäkelä
id: 2
Name: Veikko
Lname: Mäkelä
Jos kysely olisi jotain "SELECT id,lname FROM tyypit", miten saan ainoastaan yhden kappaleen mäkelöitä tulostettua?
Haluaisin tulostaa tiputusvalikon, joka näyttää ainoastaan sukunimen ja listaa valittuna kaikki henkilöt tämän sukunimen alla. Eli siis kaksinkertaisia sukunimiä ei listattaisi tähän tiputusvalikkoon, vain 1.
Esimerkki:
id: 1
name: Mikko
Lname: Mäkelä
id: 2
Name: Veikko
Lname: Mäkelä
Jos kysely olisi jotain "SELECT id,lname FROM tyypit", miten saan ainoastaan yhden kappaleen mäkelöitä tulostettua?
Haluaisin tulostaa tiputusvalikon, joka näyttää ainoastaan sukunimen ja listaa valittuna kaikki henkilöt tämän sukunimen alla. Eli siis kaksinkertaisia sukunimiä ei listattaisi tähän tiputusvalikkoon, vain 1.
Vastaukset 3
Vanhimmat
select distinct lname from tyypit
tai vaiks
select min(id) as id, lname from tyypit group by lname
ilman duplikaatteja:
SELECT id, Lname FROM tyypit GROUP BY Lname ORDER BY id ASC
Älkää ihmeessä opetelko poistamaan duplikaatteja GROUP BY:lla, sillä sitä ei tosiaankaan ole siihen tarkoitettu. Eihän se näin pienellä esimerkillä vielä mitään kauheaa tietokantamoottorin rääkkäystä ole, mutta eräänä kauniina päivänä te teette sen kannassa kyselyssä joka koskee kymmeniätuhansia tai satojatuhansia rivejä jos suhtaudutte noin huolettomasti ja silloin sillä on väliä. GROUP BY:lla on hyvä ja järkevä käyttötarkoitus mutta se ei ole duplikaattien poisto!
MySql:ssä voi kyselyn lopussa tehdä LIMIT 1 joka rajoittaa tulosjoukon rivien määrän yhteen