SQL 按不同列选择整行
Posted
技术标签:
【中文标题】SQL 按不同列选择整行【英文标题】:SQL Select Entire Row by Distinct Columns 【发布时间】:2009-09-22 22:37:47 【问题描述】:我需要一个 sql 语句,它允许我从 oracle 数据库中选择一整行,但按不同的列。这是一个简化的数据库:
Project_Num Title Category
0 Project 1 Admin
0 Project 1 Development
1 Project 2 Admin
2 Project 3 Development
我需要我的语句返回以下结果集:
0 Project 1 Admin
1 Project 2 Admin
2 Project 3 Development
所以每个项目都是根据其 project_num 和 title 是否唯一来返回的。如果一个项目有 2 个以上类别不同的条目,我只需要选择一次该项目(我为该项目选择哪个条目并不重要)。
谁能帮帮我?
【问题讨论】:
【参考方案1】:SELECT Project_Num, Title, MIN(Category) AS Category
FROM MyTable
GROUP BY Project_Num, Title;
【讨论】:
【参考方案2】:您甚至需要在结果集中包含 Category 列吗?
如果没有,那么你可以使用:
SELECT DISTINCT Project_Num, Title
FROM MyTable
【讨论】:
【参考方案3】:SELECT *
FROM (SELECT DISTINCT YourDistinctField FROM YourTable) AS A
CROSS APPLY
( SELECT TOP 1 * FROM YourTable B
WHERE B.YourDistinctField = A.YourDistinctField ) AS NewTableName
我已经尝试了几个小时来解决这个问题,我尝试了很多不起作用的解决方案,最后通过搜索“加入前 1”并将我找到的解决方案调整为一个不同的搜索得到了它。
【讨论】:
以上是关于SQL 按不同列选择整行的主要内容,如果未能解决你的问题,请参考以下文章