首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Server中提取数据,不重复某一列

从Server中提取数据,不重复某一列
EN

Stack Overflow用户
提问于 2014-08-15 04:28:49
回答 2查看 49关注 0票数 2

以前也有人问过类似的问题,我尝试过所有这些解决方案。不幸的是,他们中没有一个为我工作。这是我的要求。有一个包含column1 (即PK)、column2、column3、column4、column5的表。除第一列(PK)外,所有列都可能在不同的行中具有重复的值。但是,我想要拉出一个只有一个条件的所有行的列表,column2不能重复。如果column2中有多个具有重复值的行,我只想要任何行(比如第一个行,可以使用min(Column1)来完成),而忽略column2中具有相同值的行。

我尝试了group,但没有工作,因为group要求我将所有列都分组,这将导致所有列的组合都是唯一的。

编辑

谢谢大家让我走上正轨。我尝试了很多事情,最后我想我找到了正确的答案。如果你看到任何问题,请评论。

代码语言:javascript
运行
复制
select * from myTable where column1 in (select MIN(column1) from myTable group by  column2)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-15 04:46:05

要获得包含最小column1值的完整行,可以使用解析函数来分配由column1分区按column2排序的行的顺序。

然后,您只需选择第1行(每个分区的第一行)的行,就可以得到具有最小值column1的完整的现有行;

代码语言:javascript
运行
复制
WITH cte AS (
  SELECT column1, column2, column3, column4, column5,
    ROW_NUMBER() OVER (PARTITION BY column2 ORDER BY column1) rn
  FROM test
)
SELECT column1, column2, column3, column4, column5
FROM cte
WHERE rn=1;

一个要测试的SQLfiddle

票数 1
EN

Stack Overflow用户

发布于 2014-08-15 04:31:08

只需将MIN()应用于您想要检索的所有其他列,并在您希望唯一的一个列上使用group by

代码语言:javascript
运行
复制
SELECT MIN(column1), column2, MIN(column3), MIN(column4), MIN(column5)
FROM your_table
GROUP BY column2

更新

正如注释中提到的,上面的解决方案并不返回完整的行,而是返回组中所有列的最小值。根据column1中的最低值检索完整行

代码语言:javascript
运行
复制
SELECT column1, column2, column3, column4, column5
FROM your_table t1
WHERE t1.id = (
  SELECT TOP 1 t2.id
  FROM your_table t2
  WHERE t2.column2 = t1.column2
  ORDER BY t2.column1
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25321266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档