繁体   English   中英

从表格返回PK,其中FK出现多次

[英]Returning PK from table, where FK appears more than once

我被要求返回所有property_id的(PK),其中客户拥有多个属性(property_id,FK)。 下表是视觉参考:

CustomerPropertiesTable

如何使用有效的SQL语法执行此操作? 我的思考过程如下:

SELECT property_id FROM CustomerProperties
WHERE COUNT(property_id) > 1

这显然是无效的,但这就是我的OOP思维过程。

按要唯一的列分组,然后仅选择计数> 1的那些组

SELECT property_id 
FROM CustomerProperties
GROUP BY property_id
HAVING COUNT(*) > 1

当您进行分组时,所有汇总函数(如COUNT())都将应用于每个组,而不是完整的结果集。 HAVING子句用于组范围条件,而WHERE子句用于记录条件。

如果我正确理解您的问题,则示例表图像的预期结果将为1、4。

这样的事情应该会让您入门。

DECLARE @Test TABLE 
(
    PropertyId  INT PRIMARY KEY,
    CustomerId  INT
);

INSERT @Test ( PropertyId, CustomerId ) 
VALUES ( 1, 1 ), ( 2, 2 ), (3, 3 ), ( 4, 1 );

SELECT
    PropertyId
FROM 
    @Test
WHERE 
    CustomerId IN
    ( 
        SELECT 
            CustomerId 
        FROM 
            @Test
        GROUP BY 
            CustomerId
        HAVING COUNT(*) > 1
    );

查询的第二部分查找具有多个属性的客户。

暂无
暂无

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

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