这是一个基本的左连接问题,我读了很多文章解释发生了什么,但不知何故解决方案没有点击我的脑海。我的左表有独特的记录。我的右表有几个记录在左边的每个记录。左加入结果额外记录
在我一直在阅读的文章中,常常解释为左表有客户,右表有订单。这是非常相似,但不完全是我所面临的。
在我的情况左表有唯一的记录,右边有重复的数据要迁移到数据库左表所以我试图编写一个查询,将加入共享的密钥,但我只需要从右侧记录一条记录。我得到的结果当然有多条记录,因为单个左边的匹配在右边多次。
我想我需要添加某种过滤,如Top(1),但仍阅读/学习,并想从这个名单上的brainiacs反馈/方向。
以下是我与工作的一个简单的模式:
DECLARE @Customer TABLE
(
Id int,
Name varchar(50),
email varchar(50)
)
INSERT @Customer VALUES(1, 'Frodo', '[email protected]')
INSERT @Customer VALUES(2, 'Bilbo', '[email protected]')
INSERT @Customer VALUES(3, 'Galadriel', '[email protected]')
INSERT @Customer VALUES(4, 'Arwen', '[email protected]')
INSERT @Customer VALUES(5, 'Gandalf', '[email protected]')
DECLARE @CustomerJobs TABLE
(
Id int,
email varchar(50),
jobname varchar(50)
)
INSERT @CustomerJobs VALUES(1, '[email protected]', 'RingBearer')
INSERT @CustomerJobs VALUES(2, '[email protected]', 'RingBearer')
INSERT @CustomerJobs VALUES(3, '[email protected]', 'RingBearer')
INSERT @CustomerJobs VALUES(4, '[email protected]', 'RingBearer')
INSERT @CustomerJobs VALUES(5, '[email protected]', 'RingBearer')
INSERT @CustomerJobs VALUES(6, '[email protected]', 'Burglar')
INSERT @CustomerJobs VALUES(7, '[email protected]', 'Burglar')
INSERT @CustomerJobs VALUES(8, '[email protected]', 'Burglar')
INSERT @CustomerJobs VALUES(9, '[email protected]', 'MindReader')
INSERT @CustomerJobs VALUES(10, '[email protected]', 'Evenstar')
INSERT @CustomerJobs VALUES(10, '[email protected]', 'Evenstar')
INSERT @CustomerJobs VALUES(11, '[email protected]', 'WhiteWizard')
INSERT @CustomerJobs VALUES(12, '[email protected]', 'WhiteWizard')
SELECT
Cust.Name,
Cust.email,
CJobs.jobname
FROM
@Customer Cust
LEFT JOIN @CustomerJobs CJobs ON
Cjobs.email = Cust.email
我与ROW_NUMBER玩弄过的分区()作为也许我应该与ROW_NUMBER在分区加入到热膨胀系数,而不是桌子本身?
我有另一个约束是我无法从右表中删除重复项。
所以再次我为简单的问题表示歉意,并感谢您的帮助。
从右边只需要一条记录是什么意思?哪个记录?或者你是否只关心正确的桌子有任何记录但不关心哪个记录?在你的例子中,他们总是同一个人的记录;你的所有数据都是这种情况吗? – mayabelle
我只需要添加到我的左数据库的工作名称,因为这是重复的权利,我不关心它使用哪个记录我只是想要它一次。 – GPGVM