我想这是一个很容易解决的问题,但我正在研究一小时的答案。 我有一个包含三列的表:“id”,“id_x”和“name”。但它有重复的值,如下所示:
id id_x name
1 100 Name_aaa
2 100 Name_aaa
3 100 Name_aaa
4 100 Name_aaa*
5 101 Name_bbb
6 101 Name_bbb*
好的,好吧,我没有创建这个表,我也无法修改它们......我只想知道我可以执行什么查询只返回值“100 - Name_aaa”和“101 - name_bbb” ...请注意,在某些名称后面有一个“*”。我只想通过“id_x”进行分组。
有没有办法在不使用子查询或连接的情况下执行此操作?
提前致谢!
答案 0 :(得分:9)
有些未经测试,但应该这样做
select id_x, min(name) as name
from table
group by id_x
答案 1 :(得分:1)
试试这个,
从tablename
中选择不同的id_x,名称
答案 2 :(得分:0)
select distinct
id_x,
case when name ~ E'\\*$' then substring(name, 1, length(name)-1)
else name end
from t;
答案 3 :(得分:0)
Or:
SELECT DISTINCT ON (id_x) id_x, name FROM table ORDER BY id_x, name;