Sql-Server

當我從外鍵約束中選擇不同的值時,結果重複

  • July 15, 2019

我想從兩個不同的表中選擇值,它們之間有一對多的關係。在選擇期間,即使我使用distinct和分組,它也會檢索重複值。上表是person table,下表是address在此處輸入圖像描述

我正在使用此查詢來檢索匹配的記錄。 在此處輸入圖像描述 我想將地址分組到單個記錄中,但它的工作我錯過了什麼嗎?我希望我的結果看起來像這樣 在此處輸入圖像描述

這是一個如何實現的範例

--demo setup
Declare @Table1 table (id int, name varchar(20), lastname varchar(20), imageshortpath varchar(100), imagefullpath varchar(100))
insert into @Table1(id, name, lastname, imageshortpath, imagefullpath) values
(2108,'mudasir', 'khan','imageshortpath','imagefullpath')

Declare @Table2 table (id int, peopleid int, address varchar(20))
insert into @Table2(id, peopleid,address) values 
(1,2108,'hyderabad'),(2,2108,'larkana')

--solution
select t1.*, 
STUFF((
   SELECT ',' + address
   FROM @Table2 t2
   WHERE t2.peopleid = t1.id
   FOR XML PATH('')
   ), 1, 1, '') AS Address
from 
@Table1 t1

| id   | name    | lastname | imageshortpath | imagefullpath | Address           |
|------|---------|----------|----------------|---------------|-------------------|
| 2108 | mudasir | khan     | imageshortpath | imagefullpath | hyderabad,larkana |

查看這個關於Stuff 和 ‘For Xml Path’ 如何在 Sql Server 中工作的出色答案。

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