我有一個IDNumber,Birthdate,Option和ID列的成員表。該ID是一個GUID,是PK。如何使用具有不同ID值的同一表中的記錄更新SQL-Server 2008表
現在,一些議員在方案1和都充滿了數據(IDNumber中,生日)列。 部分會員在其他選項中。 在此示例中,選項3上有成員與選項1上的成員具有相同的ID號(實際上它們是相同成員,具有多個選項)。 但是,這些成員的Birthdate列是空的。 我想更新我的表,以匹配選項1來自會員的生日值,以反映期權3.
從本質上說,
Option |IDNumber |Birthdate
-----------------------------------
1 |123 |19900101
1 |234 |19800101
3 |123 |
3 |234 |
我怎麼會去更新,以反映失蹤的生日選項3? 我至今嘗試:
DECLARE @temp TABLE (
--birthdate int,
idnumber VARCHAR(13)
)
INSERT INTO @temp (idnumber)
SELECT IDNumber
FROM Member
WHERE
OPTION = 1
AND IDNumber IN (SELECT IDNumber FROM Member WHERE OPTION = 3)
UPDATE Member
SET BirthDate = m2.BirthDate
FROM Member m2
INNER JOIN @temp m ON m.idnumber = m2.IDNumber
WHERE
OPTION = 3
它說這影響了記錄,但不屬於期權成員3
我也試圖做的事:
update member set BirthDate = (select BirthDate from Member where
Option=1 and IDNumber in(select IDNumber from Member
where Option=3))
where Option=3
它返回錯
子查詢返回多個值。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。
請你能在指出我在那裏出了錯幫助?
似乎是錯誤的方法。不要多次存儲生日。你需要一個單獨的桌子! – jarlh
@Nicholas,所以你需要Id'123'作爲'Option3'必須具有生日到'19900101'。類似的,Id' 234'和'Option3'的出生日期應該設置爲'19800101'? – Kane
成員只應在您的會員表中出現一次,並且您應該有一個相關的選項表,它鏈接在會員ID上。您的設計不正確,這是您遇到此問題的原因。 – Tanner