我被要求返回所有property_id'(PK),其中客户拥有多个属性(property_id,FK)。以下是视觉参考表:
如何在有效的SQL语法中执行此操作?我的思维过程是这样的:
SELECT property_id FROM CustomerProperties
WHERE COUNT(property_id) > 1
这显然无效,但这是我的OOP思维过程。
答案 0 :(得分:0)
按您想要唯一的列分组,并仅选择那些具有计数>的组1
SELECT property_id
FROM CustomerProperties
GROUP BY property_id
HAVING COUNT(*) > 1
当您进行分组时,所有聚合函数(如COUNT())将应用于每个组,而不是完整的结果集。 HAVING子句用于组范围的条件,而WHERE子句用于记录条件。
答案 1 :(得分:0)
如果我正确理解您的问题,您的样本表图像的预期结果将为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
);
查询的第二部分查找具有多个属性的客户。