如何在mysql中仅为两列选择不同的值

时间:2016-03-02 10:01:47

标签: mysql sql

我创建了一个表

CREATE TABLE `region_details` (
  `id` int(5) NOT NULL,
  `file_id` varchar(20) NOT NULL,
  `region` varchar(30) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

假设我有10条记录如下

id     file_id     region
1      aaa         a
2      bbb         b
3      ccc         a
4      ddd         c
5      abc         d
6      a01         a
7      j05         b
8      005         c
9      a1021       a
10     111j        b

我需要不同区域值的id和区域

   id     region
    1     a
    2     b
    4     c
    5     d

3 个答案:

答案 0 :(得分:1)

只需执行GROUP BY,使用MIN(id)选择每个地区的第一个ID。

select min(id) as id, region
from region_details
group by region

答案 1 :(得分:1)

你可以这样做:

SELECT min(id),region
FROM YourTable
GROUP BY region

答案 2 :(得分:-1)

另外两个答案是将Id汇总到一个聚合函数(min,或max或其他一些reduce函数),但是查看数据,结果可能就是这样。您想要的是id和region的所有独特组合,您可以使用以下内容找到它们:

select id, region
from yourtable
group by id, region

如果您想了解如何/是否/列出哪些列,由于给定ID /区域组合存在多个文件,您可以尝试:

select id, region, count(*)
from yourtable
group by id, region

count(*)值大于1的任何行都表明您已经在这些特定组合下搜索了多个文件。