繁体   English   中英

SQL MS-Access为多个列选择不同

[英]SQL MS-Access Select Distinct for multiple columns

很抱歉再次提出这个问题,但我无法从现有答案中得出解决问题的方法。

我有一个表(“ Data ”),我需要从中拉出三列(“ PID ”,“ Manager ”,“ Customer ”),只有“ PID ”必须是不同的。 我不在乎为其他列(“ Manger ” /“ Customer ”)提取了哪些记录,它可能是第一个条目或其他内容。

SELECT Distinct PID, Manager, Customer
FROM Data;

将为我提供PID,Manager和Customer不同的所有行,因此,如果有两个具有相同PID但具有不同Manager的条目,我将得到两个记录而不是一个。

非常感谢你。

您可以做到这一点,希望对您有所帮助

SELECT PID, max(Manager), max(Customer)
FROM Data
group by PID

要么

   SELECT PID, min(Manager), min(Customer)
FROM Data
group by PID

编辑

我会举一个例子,向您解释Max & Min Func

这是样品表

CREATE TABLE data(
    PID int ,
    Manager varchar(20) ,
    Customer varchar(20) 
) ;


insert into data
values
(1,'a','b'),
(1,'c','d'),
(3,'1','e'),
(3,'5','e'),
(3,'3','e')

现在,

这是三个查询,将返回各自的输出,

select * from data;


SELECT PID, max(Manager), max(Customer)
FROM Data
group by PID;


  SELECT PID, min(Manager), min(Customer)
FROM Data
group by PID

以上查询的输出是

在此处输入图片说明

说明: MAX

MAX为经理Coz返回C & 5C大于A ,同样5大于1 & 3

最小功能与MAX功能完全相反且具有自我说明性。

我也在演示中创建了请单击以查看Fiddle上的演示

单击此处查看演示

SELECT "PID", max("Manager"), max("Customer")
FROM "Data"
GROUP BY "PID";

该查询返回唯一的“ PID”以及每个“ PID”的最大值“ Manager”和“ Customer”。

DISTINCT适用于选择列表中的所有列。 因此,您需要使用GROUP BY +聚合函数(为多个行返回一个值)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM