使用if else更新sqlplus

时间:2014-06-05 13:34:46

标签: sql if-statement updates sqlplus

我如何在sql中实际使用if else更新? 我尝试了很多方法,但它仍然没有用。

这就是问题:

将一个名为“Status”的列添加到关系表Customer,并使用一个UPDATE语句在列中填充有关客户状态的信息。标记'Y'如果客户已下订单,否则'X'将被初始化。

我被困在更新部分。

UPDATE CUSTOMER
IF(customer.customerID IN (SELECT customerID from invoice))
( set status = 'y' )
else
( set status = 'x' )
endif
where status is null;

3 个答案:

答案 0 :(得分:2)

您可以使用案例陈述

UPDATE CUSTOMER
SET Status = CASE WHEN CUSTOMER.CUSTOMERId IN (SELECT customerID from invoice)
    THEN 'y'
    ELSE 'n' END
where status is null;

答案 1 :(得分:2)

你想要做的是一个case语句,因为这是你在sql中最接近IF的地方。

update customer
set status
  case
    when exists (select customerID from Customer where CustomerID in (select customerID from invoice) 
    then
        'y'
    else
        'x'
  end
where stats is null

答案 2 :(得分:0)

DECLARE      @customerID INT
SET          @customerID = (SELECT       CustomerID
                            FROM         Invoice 
                            WHERE        CustomerName = 'some_customer_name')

IF (@customerID = NULL)
BEGIN
   UPDATE     Customer
   SET        Status = 'Y'
   WHERE      CustomerID = @customerID
END
ELSE
BEGIN
   UPDATE     Customer
   SET        Status = 'x'
   WHERE      CustomerID = @customerID
END