2017-10-18 52 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