[英]Returning PK from table, where FK appears more than once
我被要求返回所有property_id的(PK),其中客户拥有多个属性(property_id,FK)。 下表是视觉参考:
如何使用有效的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.