2014-06-05 2 views
0

SQL에서 update가있는 경우 실제로 어떻게 사용합니까? 나는 많은 방법을 시도했지만 여전히 작동하지 않습니다.if update on sqlplus

관계형 테이블 고객에게 '상태'라는 컬럼을 추가하고 고객의 상태에 대한 정보와 함께 열을 채우기 위해 하나의 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; 
+0

업데이트에 case 문을 사용해야합니다. – SriniV

답변

2

당신은 case 문

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

내 답변은 매우 단순한 답변입니다. SQL을 처음 접하는 사람이라면 쉽게 이해할 수 있습니다. 그러나 이것은 정답입니다. 이것이 바로 이것에 관한 올바른 길입니다. 이것은 SQL Case 문을 사용하는 방법과 SQl 쿼리를 요약하는 데있어 SQL 문을 사용하는 방법에 대한 완벽한 예입니다. –

+0

+1 Upvoted this. 또한, OP가 올바른 대답으로 표시되어야합니다. –

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 
2

그건 당신이 SQL에 IF를 얻을 수있는 가장 가까운이기 때문에 당신이 원하는 것은 case 문이다를 사용할 수 있습니다.

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 
+0

좋은 답변입니다. +1 upvote의 너무! –