2013-04-23 113 views
-1

我试图更新是否存在或插入如果不存在,但此查询将不会因某些原因SQL高级查询

DECLARE @serverID varchar(60) 
SET @serverID='(SELECT `c_server` FROM `admin_settings` WHERE `member_id`='%1')' 
IF EXISTS (SELECT `id` FROM `s_advanced_info` WHERE `s_id` = @serverID) 
UPDATE 
    `s_advanced_info` 
SET 
    `s_hostname`='%2', 
    `s_password`='%3', 
    `s_admin_password`='%4', 
    `s_motd`='%5', 
    `s_sigcheck`='%6', 
    `s_maxplayers`='%7', 
    `s_kickduplicate`='%8', 
    `s_sidechat`='%9', 
    `s_von`='%10', 
    `s_vonquality`='%11', 
    `s_datetime_type`='%12', 
    `s_static_date`='%13', 
    `s_static_time`='%14' 
WHERE 
    `s_id` = @serverID 
ELSE 
INSERT INTO 
    `s_advanced_info` 
VALUES 
    ('',@serverID,'%2','%3','%4','%5','%6','%7','%8','%9','%10', 
    '%11','%12','%13','%14') 

工作时,我尝试在MySQL控制台,它说的错误是在这里:

DECLARE @serverID VARCHAR(60) SET @serverID = '(SELECT c_server FROM admin_settings WHERE member_id = '%1')'

是什么错误意味着以及如何纠正呢?

+0

那么,这是什么问题? – 2013-04-23 06:15:18

+0

祝贺你,你知道提前查询! – Freelancer 2013-04-23 06:17:39

+0

你希望我们用它来做什么...? – 2013-04-23 06:21:38

回答

0

试试这个:DECLARE @serverID VARCHAR(60)SET @serverID =(SELECT c_server FROM admin_settings WHERE member_id = '%1')

Becasue好像你的SERVERID变量设置为恰好一个字符串成为一个sql查询。那真的是你想要做的吗?