2014-11-19 3 views
0

Эй, ребята я новичок в MySQL actually..I Have написал код что-то вродесазе не работает хорошо

CREATE TABLE CUSTOMERS(
    ID INT    NOT NULL, 
    NAME VARCHAR (20)  NOT NULL, 
    AGE INT    NOT NULL, 
    ADDRESS CHAR (25) , 
    SALARY DECIMAL (18, 2), 
    PRIMARY KEY (ID) 
); 


INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) 
VALUES (1,'aff',2,3,5); 

Мой сазе выглядеть

select CASE WHEN ID > 0 THEN SET NAME = 'SDFSDF'; ELSE SET NAME = 'ASD' 
END CASE; 
from CUSTOMERS 

Когда я запускаю это на SQL скрипку он дает мне ошибку, как

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET NAME = 'SDFSDF'; ELSE SET NAME = 'ASD' END CASE' at line 1: select CASE WHEN ID > 0 THEN SET NAME = 'SDFSDF'; ELSE SET NAME = 'ASD' END CASE

Может кто-нибудь помочь мне ..any помощь будет appreciatd

ответ

2

Правильное утверждение

select 
case 
when id > 0 then 'sdfsdf' 
else 'asd' end as name 
from customers ; 
+0

вау работает как шарм – lovemysql

+0

и должны отметить это как ответ, если вы действительно @lovemysql :) – mrgenco

1

Почему вы не просто делать то, что предлагает сообщение об ошибке? Read about the right syntax. Вы должны заметить, что в вашем заявлении есть ;, которые там не принадлежат.

Правильное утверждение следует читать:

select CASE WHEN ID > 0 
      THEN 'SDFSDF' 
      ELSE 'ASD' 
     END CASE as Name 
from CUSTOMERS; 

Обратите внимание, что не любой ; после THEN или END. Кроме того, SET тоже не принадлежит.

+1

Это по-прежнему недействителен. Ключевое слово 'SET' не входит в оператор' CASE'. – Dan

+0

На этой странице показана ошибка – lovemysql

+0

@Dan: Вы правы, исправляя это сейчас. – waka

2

Ваша реализация неверна. Ваш запрос должен быть таким:

SELECT CASE WHEN ID > 0 
       THEN 'SDFSDF' 
       ELSE 'ASD' 
      END AS NAME 
    FROM CUSTOMERS 
2

Вы пытаетесь обновить значения в таблице?

В этом случае используйте это:

UPDATE customers SET name = CASE WHEN ID > 0 THEN 'SDFSDF' ELSE 'ASD' END 
1

использовать этот

select CASE WHEN ID > 0 THEN SET NAME = 'SDFSDF' ELSE SET NAME = 'ASD' 
END CASE as customer_name from CUSTOMERS 
0

Гай, ваш вопрос плохо. Вы не приложили никаких усилий. Просто ознакомьтесь с синтаксисом CASE control function

Вы должны удалить слово CASE с конца.

Select CASE WHEN ID > 0 THEN SET NAME = 'SDFSDF'; ELSE SET NAME = 'ASD' 
END /* CASE */; 
/*from CUSTOMERS*/ 

Ответ:

select *, (Select CASE WHEN ID > 0 THEN SET NAME = 'SDFSDF' 
      ELSE SET NAME = 'ASD' END) 
from CUSTOMERS