【发布时间】:2015-04-07 10:20:15
【问题描述】:
insert into MemberGroup (MemberId, MemberGroupId, MemberJoinDate, MemberExpiryDate)
SELECT DISTINCT
TransMemberId, 404, MAX(transaction_time),
dateadd(yy,1,MAX(transaction_time))
FROM
DataTrans
INNER JOIN
DataTransItem ON DataTransId = DataTransItemId
LEFT JOIN
MemberGroup ON MemberId = DataTransItemId
INNER JOIN
MemberMembership ON MemberId = MembershipId
INNER JOIN
LinkedMember ON MembershipId = LinkedMemberId
WHERE
membership_clubid = 1
AND TransMemberId IN (select LinkedMemberId from LinkedMember)
AND TransMemberId IN (select LinkedMemberId from LinkedMember
where MemberGroupId NOT IN (1, 2, 3, 4, 5))
AND TransMemberId IN (select MemberLinkedId from LinkedMember
where DataTransItemId = 2414)
GROUP BY
TransMemberId
为什么这会返回以下错误,即使它在插入语句中使用了 distinct 并且最后将 TransMemberId 分组以选择一个。
违反主键约束“PK_MembershipGroup”。无法在对象“dbo.MemberGroup”中插入重复键。重复键值为 (FFASED487948KXWC1MH7, 404)。
DataTransId
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
TransMemberId
F123TK1TSXX7
F123TK1TSXX7
F123TK1TSXX7
KS723423CLG8LSQ
KS723423CLG8LSQ
KS723423CLG8LSQ
KS723423CLG8LSQ
KS723423CLG8LSQ
48232423KXWC1MH7
48232423KXWC1MH8
48232423KXWC1MH9
F2P3XQTTRJ44232423
F2P3XQTTRJ44232424
F2P3XQTTRJ44232425
F2P3XQTTRJ44232426
F2P3XQTTRJ44232427
DataTransItemId
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
1.24322E+11
MembershipId
F123TK1TSXX7
F123TK1TSXX7
F123TK1TSXX7
KS723423CLG8LSQ
KS723423CLG8LSQ
KS723423CLG8LSQ
KS723423CLG8LSQ
KS723423CLG8LSQ
48232423KXWC1MH7
48232423KXWC1MH8
48232423KXWC1MH9
F2P3XQTTRJ44232423
F2P3XQTTRJ44232424
F2P3XQTTRJ44232425
F2P3XQTTRJ44232426
F2P3XQTTRJ44232427
LinkedMemberId
F123TK1TSXX7
F123TK1TSXX7
F123TK1TSXX7
KS723423CLG8LSQ
KS723423CLG8LSQ
KS723423CLG8LSQ
KS723423CLG8LSQ
KS723423CLG8LSQ
48232423KXWC1MH7
48232423KXWC1MH7
48232423KXWC1MH7
F2P3XQTTRJ44232423
F2P3XQTTRJ44232423
F2P3XQTTRJ44232423
F2P3XQTTRJ44232423
F2P3XQTTRJ44232423
MemberLinkedId
48KXWC1MH7ASGER
48KXWC1MH7ASGER
48KXWC1MH7ASGER
LKJDJX2RQ26Y7VD
LKJDJX2RQ26Y7VD
LKJDJX2RQ26Y7VD
LKJDJX2RQ26Y7VD
LKJDJX2RQ26Y7VD
F1TK1TSXX723FSDE
F1TK1TSXX723FSDE
F1TK1TSXX723FSDE
Z3VHVL846QQWER
Z3VHVL846QQWER
Z3VHVL846QQWER
Z3VHVL846QQWER
Z3VHVL846QQWER
【问题讨论】:
-
MemberGroup是空表吗?当你有GROUP BY时,你不需要DISTINCT,dateadd(yy,1,MAX(transaction_time))应该在GROUP BY之后。 -
谢谢,不,这不是一张空桌子。我正在尝试将值插入到成员组中,其中 LinkedMember 表中链接的成员在 ID 为 1、2、3、4 和 5 的成员组中不存在
-
澄清一下,如果我在没有惰性不同部分的情况下执行 select * 语句,我们将因此显示多条记录。有什么方法可以在没有 Group By 或 Distinct 的情况下选择唯一的成员 ID?你能在内部联接上做 UNION 吗?
-
您选择部分的结果不是唯一的吗?你能给出一些示例数据吗?
-
我猜肯定有
FFASED487948KXWC1MH7已经在表中
标签: sql sql-server