2017-10-18 71 views
0

我有MySQL的SELECT DISTINCT如何加入一些相應的列查詢結果

id,column1, column2, column3,column4,column5 

的MySQL表中SELECT DISTINCT回報我什麼,我需要和這個查詢必須保持完全按照IS

SELECT DISTINCT column1,column3 from tablename 

但作爲一個輸出I只具有2列的要求,在DISTINCT查詢上述

column1,column3 

問題 - 如何加入到這個結果其他對應的列從同一個表中?

例如

column1,column3,id,column5 

花了幾個在谷歌時,兩個「最近」的想法是一樣的東西

SELECT DISTINCT column1,column3 
from tablename AS tbl1 
INNER JOIN (SELECT id,column5 from tablename) AS tbl2 

但是這樣的查詢反正返回我的只有

column1,column3 

我的預期結果應該是 column1,column3 (exactly as a result of SELECT DISTINCT) + two other columns id,column3 - 這樣我就可以將這個結果保存到一個有4列的新表中。 但我只有兩列,正如我上面所述。

實例添加 http://sqlfiddle.com/#!9/1e4472/1

請注意 - 查詢結果不顯示ID 4因爲這個ID在這兩個領域的重複 - 公司和城市。所以這正是我需要的。

那麼,如何在結果中顯示公司和城市,還有如ID和MANAGER?

+1

一些示例數據和預期結果會使您的問題更加清晰。 – isaace

+0

如果要在結果集中添加額外的列(即列5),則必須在查詢中選擇該列。如果不修改現有的查詢,那就無法完成。 –

+0

如果有多個id匹配一行,應該選擇哪個id?我認爲你需要使用計數最小或最大與一組? – isaace

回答

2

在重複的情況下,如果要顯示具有與公司&城市相同的值的第一條(原始)記錄(即,像這裏您想要顯示id = 1而不是id = 4),則以下查詢應該可以工作:

SELECT min(id) as id,manager,company,city 
FROM DistinctResult 
group by company,city; 

Click here for Demo

希望它能幫助!

+1

完美的解決方案!是的,我嘗試了JOIN和CONCAT。 – Serge

0

簡單:

SELECT DISTINCT Column1,Column3,id,column5 

或者,如果有這些列超過1個值:

SELECT Column1,Column3,MAX(id),MAX(column5) 
GROUP BY Column1,Column3 

但是這真的取決於需求,你不是很清楚。

+0

我編輯了我的問題,SELECT DISTINCT必須保持與它返回一樣完全是我需要的。如果我可以使用'SELECT DISTINCT Column1,Column3,id,column5',但這並不會解決 – Serge

+1

編輯後更加不清楚!爲什麼它必須這樣?!爲什麼不只是發佈數據樣本,並預期的結果,所以我可以更好地理解?!爲什麼不使用替代?!或者簡而言之 - 你想做什麼? @Serge – sagi

+0

新增示例http://sqlfiddle.com/#!9/1e4472/1 – Serge