2013-07-19 15 views
5

I devono ritornare consecutive:Come selezionare e aggiornare in una query?

.NET[tableReturn] = select top(1) * from [table] where x = 0 order by desc 

ma allo stesso tempo necessario aggiornarlo:

update [table] set x = 1 where [id] = .NET[tableReturn].[id] 

e hanno bisogno di tutti i dati di questa riga

È possibile nel stessa domanda?

+0

non v'è alcun SQL Server ** 2010 ** - abbiamo 2000, 2005, 2008, 2008 R2 e il 2012 disponibili 2014 in dirittura d'arrivo .... aggiorna il tuo titolo –

+0

Usa una stored procedure. – Amy

+0

grazie, è spiacente 2005 –

risposta

8

Risolvi questo!

DECLARE @id int; 
SET @id = (select top(1) id from [table] where [x] = 0 order by id desc); 

select * from [table] where id = @id; 
update [table] set [x] = 20 where id = @id; 

: D

0

utilizzare una stored procedure. In una stored procedure, è possibile eseguire tutte le query che si desidera.
In caso contrario, sarà necessario chiamare più query in modo indipendente.

Spero che questo aiuti.

0

Prova la query seguente per l'aggiornamento della colonna con una singola query.

aggiornamento [tabella] x = 1 dove x = (selezionare cte.x da (selezionare superiore (1) * da [tabella] dove x = 0 ordina per x desc) CTE)

Nota: - ma la colonna aggiornata non dovrebbe essere colonna di identità

+0

ma nessun risultato di show selezionato. –

1

Prova questa

with cte as (select top(1) * from [table] where x=0 order by 1 desc) 
update [table] set x=1 from cte join [table] c on c.id =cte.id; 
+0

return "(1 row (s) affected)" ma non restituisce row. –

+0

Prova questo con cte as (seleziona superiore (1) * da [tabella] dove x = 0 ordina per 1 descrizione) aggiorna [tabella] imposta x = 1 da cte join [tabella] c su c.id = cte.id uscita inserita. * ; – msi77

Problemi correlati