我有一个带连接的mysql查询,我希望每个匹配只获得一行而不是全部。我的意思。
例如我们有两个表
ids(int id)
colors(int id, varchar color)
我有查询
select ids.id, colors.color from ids join colors on ids.id = colors.id;
并获得以下
id | color
------------------
1 | red
1 | blue
2 | yellow
3 | green
3 | pink
我想要一个查询来获取
id | color
-----------------
1 | red
2 | yellow
3 | green
答案 0 :(得分:4)
尝试使用限制结果数量的子查询:
select ids.id, (select colors.color WHERE colors.id = ids.id LIMIT 1) AS color FROM ids;
答案 1 :(得分:3)
select
ids.id,
min(colors.color) as color
from
ids
join
colors on ids.id = colors.id
group by
ids.id
;
答案 2 :(得分:0)
select ids.id, colors.color from ids join colors on ids.id = colors.id group by ids.id;
但请记住:colors.color
获得无担保值。
答案 3 :(得分:0)
SELECT ids.id, colors.color FROM ids JOIN colors ON ids.id = colors.id GROUP BY ids.id
答案 4 :(得分:0)
感谢您的回复,所有人都说我使用组当然这个方法是我尝试过的第一个,但是我得到了以下错误:
列“COLORS.COLOR”必须位于GROUP BY列表中; SQL语句:
我的查询是
SELECT
ids.id, colors.color
FROM ids
JOIN colors ON ids.id = colors.id
GROUP BY ids.id;
另外,我必须说你使用了h2database