2010-10-04 4 views
2

Quelqu'un peut-il me dire comment écrire une requête pour mettre à jour le premier enregistrement dans le tableau?Requête SQL pour mettre à jour le premier enregistrement dans le tableau

Merci

+1

Quelle version de SQL utilisez-vous? –

+1

Pourriez-vous épargner quelques détails? Informations sur la colonne? échantillon de données? – Tim

+1

En fonction du SGBD que vous utilisez, il peut ne pas être garanti que le premier top select de la table renvoie toujours le même enregistrement même si les données n'ont pas changé. Vous devrez peut-être trouver un meilleur critère que "top 1". –

Répondre

2

Il n'y a pas "top 1 enregistrement" dans une table relationnelle. Les enregistrements ne sont dans aucun ordre sauf si vous en spécifiez un dans la requête.

10

Vous devez décider quel est l'enregistrement supérieur dans une table, en comparant avec une colonne que vous choisissez.

Cela dit, vous pouvez le faire dans SQL Server:

UPDATE [YourTable] 
SET [YourColumn] = SomeValue 
WHERE [PrimaryKey] IN 
(
    SELECT TOP 1 [PrimaryKey] 
    FROM [YourTable] 
    ORDER BY [PrimaryKey] -- You need to decide what column you want to sort on 
) 
2

SQLServer vous pouvez utiliser le mot-clé TOP dans votre expression de mise à jour:

http://msdn.microsoft.com/en-us/library/ms177523.aspx

Quand un TOP (n) clause est utilisée avec UPDATE, l'opération de mise à jour est effectuée sur une sélection aléatoire de 'n' nombre de lignes.

0

En MS SQL, en plus des réponses existantes, il est possible de mettre à jour les TOP N lignes retournées par l'intermédiaire d'un Common Table Expression (CTE). Vous pouvez également définir un ORDER BY si nécessaire.

Un avantage de ceci est que cela fonctionnera même si votre table ne dispose pas d'une clé primaire:

WITH Top1Foo AS 
(
    SELECT TOP 1 * 
    FROM Foos 
    ORDER BY Name DESC 
) 
UPDATE Top1Foo 
    SET Name = 'zzz'; 

Il y a un

Cependant, la mise en garde mentionnée par d'autres utilisateurs reste - à l'aide TOP implique qu'il y a plus d'enregistrements répondant aux critères de sélection, et qu'il risque de mettre à jour un ou plusieurs enregistrements arbitraires.

Questions connexes