Je dois sélectionner des données lorsqu'une page est consultée et mettre à jour la colonne 'vues'. Y a-t-il un moyen de le faire en une seule requête, ou dois-je utiliser des requêtes distinctes?Puis-je mettre à jour/sélectionner dans une table dans une requête?
Répondre
Si vous ne voulez pas/avoir besoin d'utiliser une transaction, vous pouvez créer une procédure stockée première mise à jour du nombre de visionnages et sélectionne les valeurs et les renvoyer à l'utilisateur.
Vous auriez à faire dans deux déclarations dans une transaction
Begin Tran
Update Pages Set Views = Views + 1 Where ID = @ID
Select Columns From Pages Where ID = @ID
Commit Tran
déclaration PostgreSQL de UPDATE a la clause RETURNING qui renverra un jeu de résultats comme une instruction SELECT:
UPDATE mytable
SET views = 5
WHERE id = 16
RETURNING id, views, othercolumn;
Je suis sûr que ce n'est pas standard bien. Je ne sais pas si d'autres bases de données l'implémentent.
Editer: Je viens de remarquer que votre question a le tag "MySQL". Peut-être devriez-vous le mentionner dans la question même. C'est une bonne question de base de données générique - j'aimerais voir comment le faire dans d'autres bases de données.
Il serait utile si vous avez inscrit le SGBDR que vous utilisez SQL Server a l'instruction SORTIE
Exemple
USE AdventureWorks;
GO
DECLARE @MyTestVar table (
OldScrapReasonID int NOT NULL,
NewScrapReasonID int NOT NULL,
WorkOrderID int NOT NULL,
ProductID int NOT NULL,
ProductName nvarchar(50)NOT NULL);
UPDATE Production.WorkOrder
SET ScrapReasonID = 4
OUTPUT DELETED.ScrapReasonID,
INSERTED.ScrapReasonID,
INSERTED.WorkOrderID,
INSERTED.ProductID,
p.Name
INTO @MyTestVar
FROM Production.WorkOrder AS wo
INNER JOIN Production.Product AS p
ON wo.ProductID = p.ProductID
AND wo.ScrapReasonID= 16
AND p.ProductID = 733;
SELECT OldScrapReasonID, NewScrapReasonID, WorkOrderID,
ProductID, ProductName
FROM @MyTestVar;
GO
J'ai utilisé cette astuce avec Java et SQL Server vous permettent également d'envoyer deux commandes dans un seul PreparedStatement.
update tablex set y=z where a=b \r\n select a,b,y,z from tablex
Ceci devra être dans une transaction validée en lecture pour fonctionner comme vous le pensez.
- 1. Comment mettre une instruction IF dans une requête MySQL
- 2. Comment mettre à jour une table relationnelle?
- 3. Comment mettre à jour une table automatiquement?
- 4. Mettre à jour une requête avec entityframework
- 5. Mettre en œuvre une sélectionnez « distincte » dans une requête existante
- 6. peut UPDATE clause dans MYSQL utilisant PHP mettre à jour plusieurs enregistrements dans une requête?
- 7. TSQL Comment mettre à jour une colonne à partir d'une ligne dans la même table?
- 8. Comment mettre une table dans l'en-tête du rapport?
- 9. une sous-requête dans une sous-requête - est-ce possible?
- 10. Comment faire pour interroger et compter une table Employés et une table de projet dans une requête Linq dans Silverlight?
- 11. Comment mettre des guillemets doubles dans une requête ADO.NET?
- 12. Comment mettre en œuvre une requête avec IQueryable dans SilverLight
- 13. Joindre plusieurs colonnes dans une table à une seule colonne dans une autre table
- 14. Insérer une sous-requête dans une requête de sélection
- 15. Copier le résultat d'une requête dans une autre table mysql
- 16. Mettre à jour une requête à partir d'une requête de recherche
- 17. joindre une table plus d'une fois dans la même requête?
- 18. Comment utiliser select avec multi table dans une requête SubSonic?
- 19. SQL: Mettre à jour une ligne et renvoyer une valeur de colonne avec 1 requête
- 20. requête MySQL le plus efficace pour mettre à jour une table de la table de mémoire identique
- 21. mettre à jour une table dans db2 ligne par ligne à partir de .net
- 22. Ajout d'éléments à une table dans jquery
- 23. Utilisez chaque ligne dans une table en la joignant à une autre table
- 24. Condition dans une requête récursive
- 25. Utiliser foreach pour mettre à jour des champs dans une base de données mysql basée sur une autre requête
- 26. Convertir les données dans une table à une autre vue
- 27. Quel est le meilleur moyen d'insérer et de mettre à jour une table à une ligne dans MySQL?
- 28. Puis-je mettre une contrainte sur une colonne sans faire référence à une autre table?
- 29. sélectionnez une requête dans la requête de mise à jour?
- 30. Requête MySql avancée: Mettre à jour la table avec les informations d'une autre table