2014-07-19 133 views
0

語法或查詢有什麼問題?MYSQL查詢錯誤

SET @q=1000; 
SET @p=5.00; 

SELECT @ccount := COUNT(*) FROM 1detail WHERE price>[email protected]; 
if(@ccount='0') THEN 
INSERT INTO 1detail (price,quantity) VALUES (@p,@q); 

ELSE 

INSERT INTO 2detail (price,quantity) VALUES (@p,@q); 
END IF; 

它給我的錯誤:

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 'if(@ccount='0') THEN INSERT INTO 1detail (price,quantity) VALUES (@p,@q)' at line 1:

要創建表(也正在):與數字開始

CREATE TABLE 1detail 
(
quantity int, 
price DECIMAL(15,2) 
); 

CREATE TABLE 2detail 
(
quantity int, 
price DECIMAL(15,2) 
); 


INSERT INTO 1detail 
(quantity, price) 
VALUES 
('5', '10'); 
+1

是一個函數或過程或觸發器這裏面的代碼? –

回答

1

表名需要進行轉義。並且,if僅用於函數,存儲過程和觸發器中。假設這個代碼是「如果」 - 保險箱:

SET @q=1000; 
SET @p=5.00; 

SELECT @ccount := COUNT(*) FROM `1detail` WHERE price>[email protected]; 
if(@ccount='0') THEN 
INSERT INTO `1detail`(price,quantity) VALUES (@p,@q); 
ELSE 
INSERT INTO `2detail`(price,quantity) VALUES (@p,@q); 
END IF; 

如果沒有,你可以這樣做,因爲兩個插件:

INSERT INTO `2detail`(price,quantity) 
    VALUES (@p, @q) 
    WHERE exists (select 1 from `detail` where price >= @p) 

INSERT INTO `1detail`(price,quantity) 
    VALUES (@p, @q) 
    WHERE not exists (select 1 from `detail` where price >= @p)