Select

選擇區分擁有多個賬戶的所有客戶

  • January 19, 2021

我有兩張表客戶和帳戶

客戶可以擁有多個賬戶

我只想在下表中選擇擁有多個帳戶的客戶。我想加入這兩個表格並獲得擁有多個帳戶的 Robert 和 Manuel 的結果

我認為我們必須使用 HAVING COUNT(DISTINCT 但不確定如何使用?!

先感謝您!

在此處輸入圖像描述

請注意對您的問題的評論。

這是實現您正在尋找的東西的 ANSI SQL 方法:

SELECT MAX(customer.[NAME]) AS [Name]
FROM customer
INNER JOIN account
   ON customer.id = account.[customer.id]
GROUP BY customer.id
HAVING COUNT(*) > 1

這會將客戶 ID 上的customeraccount表連接在一起(請注意,在列和表名中使用特殊字元(如句點)是不好的做法,例如account表的 column [customer.id])。然後它按customer.id欄位分組(作為連接表的結果將多次出現account)。接下來,它使用HAVING帶有聚合函式的子句COUNT()來過濾掉任何少於 2 個帳戶的行。最後,由於您只想要 ,customer.NAME但我們正在分組customer.id,它使用MAX()聚合函式,因此我們可以選擇(在給定客戶 IDcustomer.NAME的分組中,它總是相同的)。customer.id

請注意,您可能需要考慮您有兩個不同customers名稱的情況,例如另一個Robert帶有customer.idof 1004(並且您的account表有兩個帳戶 for [customer.id] = 1004)。您的請求將為您返回名稱的兩個實例,Robert而無法區分兩者,因此您還應該選擇customer.id作為上述查詢的一部分。

引用自:https://dba.stackexchange.com/questions/283586