¿Cómo pongo una 'cláusula if' en una cadena SQL?

Así que esto es lo que quiero hacer en mi base de datos MySQL .

Me gustaría:

SELECT * FROM itemsOrdenetworking WHERE purchaseOrder_ID = '@purchaseOrdenetworking_ID' AND status = 'PENDING' 

Si eso no devuelve ninguna fila, lo que es posible a través de if(dr.HasRows == false) , ahora crearía una UPDATE en la database purchaseOrder :

 UPDATE purchaseOrder SET purchaseOrder_status = 'COMPLETED' WHERE purchaseOrder_ID = '@purchaseOrder_ID' 

¿Cómo podría hacer este process un poco más corto?

Para su consulta específica, puede hacer:

 UPDATE purchaseOrder SET purchaseOrder_status = 'COMPLETED' WHERE purchaseOrder_ID = '@purchaseOrder_ID' and not exists (SELECT * FROM itemsOrdenetworking WHERE purchaseOrder_ID = '@purchaseOrdenetworking_ID' AND status = 'PENDING' ) 

Sin embargo, podría adivinar que estás en un bucle en un nivel superior. Para establecer todos esos valores, intente esto:

 UPDATE purchaseOrder SET purchaseOrder_status = 'COMPLETED' WHERE not exists (SELECT 1 FROM itemsOrdenetworking WHERE itemsOrdenetworking.purchaseOrder_ID = purchaseOrder.purchaseOrdenetworking_ID AND status = 'PENDING' limit 1 ) 

Puede usar la syntax UPDATE varias tablas para efectuar un ANTI-JOIN entre purchaseOrder y itemsOrdenetworking :

 UPDATE purchaseOrder p LEFT JOIN itemsOrdenetworking i ON p.purchaseOrder_ID = i.purchaseOrder_ID AND i.status = 'PENDING' SET p.purchaseOrder_status = 'COMPLETED' WHERE p.purchaseOrder_ID = '@purchaseOrder_ID' AND i.purchaseOrder_ID IS NULL 

Como MySQL no admite if exists(*Your condition*) (*Write your query*) , puede lograr una 'cláusula if' escribiendo de esta manera:

 (*Write your insert or update query*) where not exists (*Your condition*) 

También puede usar la siguiente consulta para verificar si el logging existe y luego actualizarlo:

 if not exists(select top 1 fromFROM itemsOrdenetworking WHERE purchaseOrder_ID = '@purchaseOrdenetworking_ID' AND status = 'PENDING' ) Begin UPDATE purchaseOrder SET purchaseOrder_status = 'COMPLETED' WHERE purchaseOrder_ID = '@purchaseOrder_ID End 
 Select FROM t1 WHERE s11 > ANY (SELECT col1,col2 FROM t2 WHERE NOT EXISTS (SELECT * FROM t3 WHERE ROW(5*t2.s1,77)= (SELECT 50,11*s1 FROM t4 UNION SELECT 50,77 FROM (SELECT * FROM t5) AS t5))); 
 if not exists(select top 1 fromFROM itemsOrdenetworking WHERE purchaseOrder_ID = '@purchaseOrdenetworking_ID' AND status = 'PENDING' ) Begin UPDATE purchaseOrder SET purchaseOrder_status = 'COMPLETED' WHERE purchaseOrder_ID = '@purchaseOrder_ID End 

puede ayudarle cuando usa Merge en sql para insert, actualizar y eliminar en base a la statement de coincidencia en el server SQL, por ejemplo, le ayuda https://technet.microsoft.com/en-us/library/bb522522(v=sql. 105) .aspx