2012-05-22 62 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