Desidero aggiornare una riga nel mio data base. Il problema è che, attraverso un errore da parte mia, ho due file di dati identici. Come posso eseguire l'aggiornamento su una sola riga?Aggiornare una riga singola con t-sql
risposta
Spesso tabelle hanno un ID univoco. E dovresti filtrare su quello.
Per esempio,
UPDATE YourTable
SET YourColumnToUpdate = 'your_value'
WHERE YourUniqueColumn = @Id
Se la tabella non dispone di un ID univoco, considerare l'aggiunta di uno: una colonna integer
con un Primary Key
e Identity
.
Utilizzare SET ROWCOUNT;
SET ROWCOUNT 1; UPDATE Production.ProductInventory SET Quantity = 400 WHERE Quantità < 300; GO
In SQL Server 2005 +, è possibile utilizzare
UPDATE TOP (1) ....
Il vantaggio di questo corso SET ROWCOUNT
è che qualsiasi trigger non saranno soggetti ad un limite ROWCOUNT
, che è quasi certamente una buona cosa.
_ (ad es. _ 'UPDATE TOP (1) TABLE_NAME SET COLUMN_NAME = 'TOP 1'' –
Ti suggerisco di tornare indietro e normalizzare il tuo database. Per lo meno aggiungi una colonna di chiave primaria int incremento automatico e usa quell'id. Usando UPDATE TOP 1 potrebbe funzionare e rispondere direttamente alla tua domanda, ma la non normalizzazione del tuo database è il problema "reale".
-- 01. create the table for the test-data
CREATE TABLE dbo.Orders (
ID INTEGER
,Value DECIMAL(10, 2)
,Descr NVARCHAR(100)
,BookingDate DATETIME
,UserName NVARCHAR(100)
,CountMeasure INTEGER
)
-- 02. save the timestamp for the inserts
DECLARE @date AS DATETIME
SET @date = getdate()
-- 03. inserting test-data
INSERT INTO dbo.Orders VALUES (1,499.99,'Notebook',@date,'tgr',0)
INSERT INTO dbo.Orders VALUES (2,650.00,'PC',@date,'tgr',0)
INSERT INTO dbo.Orders VALUES (3,29.50,'Keyboard',@date,'tgr',0)
-- 04. adding the duplicate entry
INSERT INTO dbo.Orders VALUES (2,650.00,'PC',@date,'tgr',0)
-- 05. viewing the 4 Rows
SELECT * FROM dbo.Orders
-- 06. viewing the distinct 3 Rows
SELECT DISTINCT * FROM dbo.Orders
/* You don't want to delete the duplicate row, but you want to count
the distinct IDs using SUM on the CountMeasure-Column */
-- 07. alternativ solution (which may does not fit your requirements)
/* So your result shoud be the same like this */
SELECT COUNT(DISTINCT ID) as DistinctCount
FROM dbo.Orders
-- 08. Understanding the solution
/* To understand the solution we take a look on the main-part
We generate for each ID a Row-Number ordered by random
Details: https://msdn.microsoft.com/de-de/library/ms186734%28v=sql.120%29.aspx */
SELECT * , ROW_NUMBER() OVER (PARTITION BY ID ORDER BY NEWID()) AS RowNumberForEachId
FROM dbo.Orders
-- 09. The update statement
/* We use this part to update our table */
UPDATE a
SET CountMeasure = 1
FROM (-- Orders incl
SELECT * , ROW_NUMBER() OVER (PARTITION BY ID ORDER BY NEWID()) as rowNum
FROM dbo.Orders
) as a
WHERE rowNum = 1
-- 10. Viewing the Result
SELECT * FROM dbo.Orders
-- 11. Comparing Count(DISTINCT ...) with the SUM(...) alternative
SELECT COUNT(DISTINCT ID) as countDistinct, SUM(CountMeasure) as sumCountMeasure
FROM dbo.Orders
-- 12. Removing the test-table
DROP TABLE dbo.Orders
- 1. Sostituire una nuova riga in TSQL
- 2. Aggiorna una singola riga della griglia Kendo
- 3. ListView Aggiornamento di una singola riga
- 4. Come bloccare una singola riga
- 5. Aggiungi una singola riga nell'istogramma
- 6. Ridisegna una singola riga in una listview
- 7. Aggiornare una riga in Parse.com
- 8. Elenco Android Aggiorna riga singola
- 9. Trasformare un data.frame in una singola riga
- 10. ottenere una singola riga dalla tabella
- 11. Determinazione dell'ultima riga in una singola colonna
- 12. Selezionare una riga singola con LINQ TO SQL
- 13. Leggere due variabili in una singola riga con Python
- 14. Sostituire una singola riga con più righe di testo
- 15. Ottieni risultato riga singola con Doctrine NativeQuery
- 16. Riga singola se istruzione con 2 azioni
- 17. Selezionare una singola riga in MySQL
- 18. Android: come creare una singola riga AutoCompleteTextView?
- 19. Valori di somma di una singola riga?
- 20. Leggere una singola riga da stdin
- 21. EditText non scrive in una riga singola
- 22. Recupero singola riga, colonna singola DOP
- 23. Dichiarazioni 'var' a riga singola o una per riga?
- 24. tsql: il modo migliore per aggiornare una tabella db con un file csv
- 25. aggiornare una riga utilizzando spring jdbctemplate
- 26. Aggiornare un'intera singola colonna con la tabella unita query
- 27. CON VALORI TSQL
- 28. convalidare e aggiornare attributo singola scaglia
- 29. Stiramento di una riga con overflow di dati con più righe in una singola banda
- 30. Come ottenere una singola riga in una casella Rich Text per apparire come interlinea singola
"Uso SET ROWCOUNT non influenzerà DELETE, INSERT e UPDATE nella prossima versione di SQL Server. Non utilizzare SET ROWCOUNT con, INSERT e UPDATE DELETE in nuovo progetto di sviluppo e pianifica di modificare le applicazioni che attualmente lo utilizzano.Per ulteriori informazioni, vedere DELETE (Transact-SQL) per le istruzioni DELETE, INSERT e UPDATE che attualmente utilizzano SET ROWCOUNT, si consiglia di riscriverle per utilizzare la sintassi TOP. , INSERT (Transact-SQL) o UPDATE (Transact-SQL). " –
Nice Francisco, è molto importante sapere! Grazie! –