只选择一个不同的列
我想这是一个容易解决的问题,但我正在研究一个小时的答案。 我有一个三列表:“id”,“id_x”和“名称”。但它填充了重复的值,就像这样:只选择一个不同的列
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”分组。
有没有办法不使用子查询或连接?
在此先感谢!
有点未经测试,但是这应该这样做
select id_x, min(name) as name
from table
group by id_x
试试这个,
选择不同id_x,名字从表名
嗨,南大!谢谢你的回答!但如果我做“选择不同的ID_X,名称来自表名”我会得到“100 - Name_aaa”,“100 - Name_aaa *”,“101 - Name_bbb”和“101 - Name_bbb *”。 – pedrorezende 2010-12-06 13:40:43
select distinct
id_x,
case when name ~ E'\\*$' then substring(name, 1, length(name)-1)
else name end
from t;
Or:
SELECT DISTINCT ON (id_x) id_x, name FROM table ORDER BY id_x, name;
我不认为这适用于所有的数据库(只是测试过它,MySQL不喜欢它。) – Malvineous 2011-02-23 05:40:43
它为我工作。谢谢。 – 2011-07-11 01:10:27