假設地址表使用基於整數的代理主鍵(如IDENTITY列),並且如果您確實不在乎哪個標記爲DEFAULT,則可以執行類似以下操作(更新具有最小整數值的行作爲DEFAULT)。
DECLARE @Addresses TABLE
(
AddressID INT ,
CustomerID INT ,
AddressType VARCHAR(8)
)
INSERT INTO @Addresses
(AddressID ,
CustomerID ,
AddressType
)
SELECT 1 ,
1 ,
NULL --Client 1 has 3 addresss
UNION ALL
SELECT 2 ,
1 ,
NULL
UNION ALL
SELECT 3 ,
1 ,
NULL
UNION ALL
SELECT 4 ,
2 ,
NULL --Client 2 has 1 addresses
UNION ALL
SELECT 5 ,
3 ,
NULL --Client 3 has 2 addresses
UNION ALL
SELECT 6 ,
3 ,
NULL
SELECT *
FROM @Addresses a
--update an arbitrary address ASSUMING that you used an integer for a surrogate primary key
UPDATE @Addresses
SET AddressType = CASE WHEN AddressID IN (SELECT MIN(AddressID)
FROM @Addresses a
GROUP BY a.CustomerID) THEN 'Default'
ELSE 'Shipping'
END
SELECT *
FROM @Addresses a
第一個是默認排序的第一個。 – Sorskoot 2009-10-06 09:35:08