How do I put an 'if clause' in an SQL string?

前端 未结 9 1388
误落风尘
误落风尘 2021-01-29 18:16

So here\'s what I want to do on my MySQL database.

I would like to do:

SELECT *
    FROM itemsOrdered
    WHERE purchaseOrder_ID = \'@purchaseOr         


        
相关标签:
9条回答
  • 2021-01-29 18:54

    For your specific query, you can do:

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

    However, I might guess that you are looping at a higher level. To set all such values, try this:

    UPDATE purchaseOrder
        SET purchaseOrder_status = 'COMPLETED'
        WHERE not exists (SELECT 1
                          FROM itemsOrdered
                          WHERE itemsOrdered.purchaseOrder_ID = purchaseOrder.purchaseOrdered_ID AND
                                status = 'PENDING'
                          limit 1
                         )
    
    0 讨论(0)
  • 2021-01-29 18:59

    after sql server 2008 provide Merge to insert,update and delete operation based on single match statement, also that allows you to join. below sample example might be helps you.

    MERGE Target AS T
    USING Source AS S
    ON (T.EmployeeID = S.EmployeeID) 
    WHEN NOT MATCHED BY TARGET AND S.EmployeeName LIKE 'S%' 
        THEN INSERT(EmployeeID, EmployeeName) VALUES(S.EmployeeID, S.EmployeeName)
    WHEN MATCHED 
        THEN UPDATE SET T.EmployeeName = S.EmployeeName
    WHEN NOT MATCHED BY SOURCE AND T.EmployeeName LIKE 'S%'
        THEN DELETE 
    OUTPUT $action, inserted.*, deleted.*;
    

    like this you can insert, update and delete in one statements.

    and for more information you can refer official documents on https://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx

    0 讨论(0)
  • 2021-01-29 19:04
    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)));
    
    0 讨论(0)
提交回复
热议问题