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 № 1Prova 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