2012-05-22 60 views
1

的SQL查询我有一个SQL查询作为 -独特的集合记录

SELECT name_1, dpid_clid, city 
FROM dts_master_dividend 
WHERE upper(name_1) like upper('%') 
    AND dpid_clid like upper('IN30290243450560%') 
ORDER BY name_1 asc, dpid_clid asc, dividend_type desc 

它显示的结果 -

ABHINAV BHARTI IN30290243450560 PUNE 
ABHINAV BHARTI IN30290243450560 DELHI 
ABHINAV BHARTI IN30290243450560 PUNE 
ABHINAV DUBEY IN30290243450560 PUNE 
ABHINAV BHARTI IN30290243450560 PUNE 

但我想我的结果 -

ABHINAV BHARTI IN30290243450560 PUNE 
ABHINAV BHARTI IN30290243450560 DELHI 
ABHINAV DUBEY IN30290243450560 PUNE 

这意味着只有一套独特的记录..
我怎样才能得到它?

+0

抱歉耽搁回复..... – Addicted

回答

2

试试这个

select name_1, dpid_clid, city 
from dts_master_dividend 
where upper(name_1) like upper('%') and dpid_clid like upper('IN30290243450560%') 
group by name_1, dpid_clid ,city 
+0

组通过始终需要与select中相同的名称,因此也通过使用name_1来分组。 – Addicted

+0

对于不同的思维仍然+1。 – Addicted

+0

Abhinav :)我认为不需要按名称归档。足够这两个文件 –

2

尝试:

select distinct name_1, dpid_clid, city 
    from dts_master_dividend 
where upper(name_1) like upper('%') 
    and dpid_clid like upper('IN30290243450560%') 
order by name_1 asc, dpid_clid asc, dividend_type desc 
0

只需添加DISTINCT关键字:

SELECT DISTINCT name_1, dpid_clid, city 
FROM dts_master_dividend 
WHERE upper(name_1) like upper('%') 
    AND dpid_clid like upper('IN30290243450560%') 
ORDER BY name_1 asc, dpid_clid asc, dividend_type desc 

这消除了从结果重复行。对于MySQL文档,请参阅here

+0

我不知道我是否真的还是假的,但我注意到了这一点----我不能使用排序顺序排列那些不在select中的列名。所以要么必须从order中删除'dividend_type desc',要么必须在select中添加'dividend_type'。之后,它工作正常。 – Addicted

+0

@Abhinav在这种情况下,只需添加额外的列。大多数情况下,它不会对你的查询性能产生实质性的影响...... – Sirko

0

使用DISTINCT

SELECT distinct name_1, dpid_clid, city 
FROM dts_master_dividend 
WHERE upper(name_1) like upper('%') 
    AND dpid_clid like upper('IN30290243450560%') 
ORDER BY name_1 asc, dpid_clid asc 
+0

我不知道我是否真实,但我注意到这一点----我不能使用order by列名不在选择。所以要么必须从order中删除'dividend_type desc',要么必须在select中添加'dividend_type'。之后,它工作正常。 – Addicted

+0

@Abhinav添加列或从订单中删除它,你确实是对的。 –

0

这可能取决于你的数据库服务器上,但要做到这一点的标准方法是使用

SELECT DISTINCT [columns] FROM [table]. 

所以尝试把一个DISTINCT在查询

select distinct name_1, dpid_clid, city from dts_master_dividend where upper(name_1) like upper('%') and dpid_clid like upper('IN30290243450560%') order by name_1 asc, dpid_clid asc, dividend_type desc 

w3schools page on select distinct更多信息

0

避免和的upper(name_1) like upper('%')代替upper('IN30290243450560%')只是使用'IN30290243450560%'

所以您的查询应该是这样 -

SELECT DISTINT name_1, dpid_clid, city 
FROM dts_master_dividend 
WHERE dpid_clid like 'IN30290243450560%' 
ORDER BY name_1 asc, dpid_clid asc, dividend_type desc; 
+0

这实际上就是我为此目的使用它们的目的...... – Addicted