/ / Mysql join ottieni una riga per partita - mysql, join

Mysql join ottieni una riga per partita - mysql, join

Ho una query mysql con un join e voglio che ogni match ottenga una sola riga non tutte. Quello che voglio dire.

per esempio abbiamo le due tabelle

ids(int id)
colors(int id, varchar color)

Ho la domanda

select ids.id, colors.color from ids join colors on ids.id = colors.id;

e ottieni quanto segue

id | color
------------------
1  | red
1  | blue
2  | yellow
3  | green
3  | pink

Voglio una query per ottenere il

id | color
-----------------
1  | red
2  | yellow
3  | green

risposte:

4 per risposta № 1

Prova a utilizzare una sottoquery che limita la quantità di risultati:

select ids.id, (select colors.color WHERE colors.id = ids.id LIMIT 1) AS color FROM ids;

3 per risposta № 2
select
ids.id,
min(colors.color) as color
from
ids
join
colors on ids.id = colors.id
group by
ids.id
;

0 per risposta № 3

select ids.id, colors.color from ids join colors on ids.id = colors.id group by ids.id;

Ma ricorda: ottieni un non garantito valore per colors.color.


0 per risposta № 4
SELECT ids.id, colors.color FROM ids JOIN colors ON ids.id = colors.id GROUP BY ids.id

0 per risposta № 5

Grazie per le vostre risposte, tutti voi mi avete detto di usare il raggruppa per Ovviamente questo metodo è stato il primo che ho provato, ma ottengo il seguente errore:

La colonna "COLORS.COLOR" deve essere nella lista GROUP BY; Istruzione SQL:

La mia domanda è il

SELECT
ids.id, colors.color
FROM ids
JOIN colors ON ids.id = colors.id
GROUP BY ids.id;

Inoltre, devo dire che uso il h2database