Select
選擇區分擁有多個賬戶的所有客戶
我有兩張表客戶和帳戶
客戶可以擁有多個賬戶
我只想在下表中選擇擁有多個帳戶的客戶。我想加入這兩個表格並獲得擁有多個帳戶的 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 上的
customer
和account
表連接在一起(請注意,在列和表名中使用特殊字元(如句點)是不好的做法,例如account
表的 column[customer.id]
)。然後它按customer.id
欄位分組(作為連接表的結果將多次出現account
)。接下來,它使用HAVING
帶有聚合函式的子句COUNT()
來過濾掉任何少於 2 個帳戶的行。最後,由於您只想要 ,customer.NAME
但我們正在分組customer.id
,它使用MAX()
聚合函式,因此我們可以選擇(在給定客戶 IDcustomer.NAME
的分組中,它總是相同的)。customer.id
請注意,您可能需要考慮您有兩個不同
customers
名稱的情況,例如另一個Robert
帶有customer.id
of1004
(並且您的account
表有兩個帳戶 for[customer.id] = 1004
)。您的請求將為您返回名稱的兩個實例,Robert
而無法區分兩者,因此您還應該選擇customer.id
作為上述查詢的一部分。