Alors, voici ce que je veux faire sur ma base de données MySQL .
Je voudrais faire:
SELECT *
FROM itemsOrdered
WHERE purchaseOrder_ID = '@purchaseOrdered_ID'
AND status = 'PENDING'
Si cela ne renvoie aucune ligne, ce qui est possible grâce if(dr.HasRows == false)
, je créerais maintenant un UPDATE
dans la purchaseOrder
base de données:
UPDATE purchaseOrder
SET purchaseOrder_status = 'COMPLETED'
WHERE purchaseOrder_ID = '@purchaseOrder_ID'
Comment pourrais-je raccourcir un peu ce processus?
itemsOrdered_ID
et a despurchaseOrder_ID
valeurs récurrentespurchaseorder
base de données d'autre part a l'identifiant uniquepurchaseOrder_ID
Réponses:
Pour votre requête spécifique, vous pouvez faire:
Cependant, je suppose que vous faites une boucle à un niveau supérieur. Pour définir toutes ces valeurs, essayez ceci:
la source
Vous pouvez utiliser la
UPDATE
syntaxe de plusieurs tables pour effectuer unANTI-JOIN
entrepurchaseOrder
etitemsOrdered
:la source
Puisque MySQL ne prend pas en charge
if exists(*Your condition*) (*Write your query*)
, vous pouvez obtenir une clause `` if '' en écrivant comme ceci:la source
Vous pouvez également utiliser la requête suivante pour vérifier si l'enregistrement existe, puis le mettre à jour:
la source
la source
SQL
la source
après sql server 2008 fournir
Merge
pour insérer, mettre à jour et supprimer l'opération basée sur une seule déclaration de correspondance, également qui vous permet de rejoindre. l'exemple ci-dessous pourrait vous aider.comme ça, vous pouvez insérer, mettre à jour et supprimer en une seule déclaration.
et pour plus d'informations, vous pouvez consulter les documents officiels sur https://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx
la source
Si la table contient des millions d'enregistrements, la requête suivante fonctionnera rapidement.
la source
Vous pouvez déclarer une variable contenant le nombre de résultats renvoyés sur la requête de sélection. Vous pouvez ensuite exécuter l'instruction de mise à jour si cette variable est supérieure à 0
la source