Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 UPDATE dbo.a SET a = b = 1, как?  [new]
ksn007
Member

Откуда:
Сообщений: 69
UPDATE dbo.a SET a = b = CASE /*очень большой кейс, который не хочется дублировать*/ END

Как? Пасиб!
6 июн 12, 13:30    [12674142]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE dbo.a SET a = b = 1, как?  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
ksn007,

UPDATE dbo.a SET a = CASE /*очень большой кейс, который не хочется дублировать*/ END,
b = a
6 июн 12, 13:34    [12674184]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE dbo.a SET a = b = 1, как?  [new]
ksn007
Member

Откуда:
Сообщений: 69
WarAnt, неа
6 июн 12, 13:38    [12674207]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE dbo.a SET a = b = 1, как?  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
ksn007
WarAnt, неа


да поторопился слегка, нужно через переменную

declare @r int
UPDATE dbo.a SET @r = CASE /*очень большой кейс, который не хочется дублировать*/ END,
a = @r,
b = @r
6 июн 12, 13:39    [12674222]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE dbo.a SET a = b = 1, как?  [new]
guest_guest
Guest
WarAnt,

Не катит:

CREATE TABLE A (A INT, B INT)

INSERT INTO A(A) SELECT * FROM (VALUES (0), (1), (2), (3)) B(B)


UPDATE dbo.a SET 
	a = CASE WHEN  A% 2 = 1 THEN 0 ELSE 1 END,
	B = A


SELECT * FROM A




Надо так:

CREATE TABLE A (A INT, B INT)

INSERT INTO A(A) SELECT * FROM (VALUES (0), (1), (2), (3)) B(B)
DECLARE @c INt

UPDATE dbo.a SET 
	@c = CASE WHEN  A% 2 = 1 THEN 0 ELSE 1 END,
	A = @c,
	B = @c
SELECT * FROM A
6 июн 12, 13:39    [12674226]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE dbo.a SET a = b = 1, как?  [new]
ksn007
Member

Откуда:
Сообщений: 69
WarAnt, guest_guest, пасиб!
6 июн 12, 13:44    [12674278]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE dbo.a SET a = b = 1, как?  [new]
step_ks
Member

Откуда:
Сообщений: 936
переменные - это все-таки ужос

DECLARE @A TABLE (A INT, B INT)

INSERT INTO @A(A) SELECT * FROM (VALUES (0), (1), (2), (3)) B(B)
DECLARE @c INt

SELECT * FROM @A

UPDATE T
    SET A=c
       ,B=c
    FROM (   
           SELECT  c = CASE WHEN  A % 2 = 1 THEN 0 ELSE 1 END
	          ,A
	          ,B
              FROM @A    
         ) T
SELECT * FROM @A
6 июн 12, 16:11    [12676066]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE dbo.a SET a = b = 1, как?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
FROM bla-bla-bla	CROSS APPLY (SELECT
	 <one big expression>
	,<another big expression>
	,...
			)	X (Epr1Name,Epr2Name,...)
А делее неважно SELECT или UPDATE, пользуйтесь Epr1Name, Epr2Name,... сколько влезет.
6 июн 12, 16:21    [12676158]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить