Então, aqui está o que eu quero fazer no meu banco de dados MySQL .
Eu gostaria de fazer:
SELECT *
FROM itemsOrdered
WHERE purchaseOrder_ID = '@purchaseOrdered_ID'
AND status = 'PENDING'
Se isso não retornasse nenhuma linha, o que é possível if(dr.HasRows == false)
, agora criaria um UPDATE
no purchaseOrder
banco de dados:
UPDATE purchaseOrder
SET purchaseOrder_status = 'COMPLETED'
WHERE purchaseOrder_ID = '@purchaseOrder_ID'
Como eu seria capaz de tornar esse processo um pouco mais curto?
itemsOrdered_ID
e possuipurchaseOrder_ID
valores recorrentespurchaseorder
banco de dados, por outro lado, tem o ID exclusivopurchaseOrder_ID
Respostas:
Para sua consulta específica, você pode:
No entanto, acho que você está fazendo um loop em um nível superior. Para definir todos esses valores, tente o seguinte:
fonte
Você pode usar a
UPDATE
sintaxe de várias tabelas para efetuar umANTI-JOIN
entrepurchaseOrder
eitemsOrdered
:fonte
Como o MySQL não suporta
if exists(*Your condition*) (*Write your query*)
, você pode obter uma 'cláusula if' escrevendo assim:fonte
Você também pode usar a seguinte consulta para verificar se o registro existe e depois atualizá-lo:
fonte
fonte
SQL
fonte
após o sql server 2008 fornecer
Merge
para inserir, atualizar e excluir a operação com base na instrução de correspondência única, também que permite que você participe. exemplo abaixo pode ser de ajuda.assim você pode inserir, atualizar e excluir em uma instrução.
e para obter mais informações, consulte documentos oficiais em https://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx
fonte
Se a tabela contiver milhões de registros, a consulta a seguir funcionará rapidamente.
fonte
Você pode declarar uma variável que contém o número de resultados retornados na consulta selecionada. Você pode executar a instrução update se essa variável for maior que 0
fonte