我正在尝试基于mysql执行一个简单的if else查询。
SELECT IF EXISTS (SELECT nickname FROM contacts WHERE contacts.user_id = 47 AND contacts.contact_id = 69)
BEGIN
SELECT nickname FROM contacts WHERE contacts.user_id = 47 AND contacts.contact_id = 69
END
ELSE
BEGIN
SELECT CONCAT(users.firstname," ",users.lastname) AS nickname FROM users WHERE users.id = 69
END但这给了我一个错误
错误代码: 1064您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以获得正确的语法,以便使用contacts.user_id = 47和contacts.c‘的联系人(在第1行选择昵称)。
有人能指点我这里出了什么问题吗?
发布于 2020-08-04 08:59:59
不能在查询中使用控制流语句(如IF )。
但是,您可以使用两个查询(其中一个查询根据您的情况返回空集)实现您显然想要做的事情。
SELECT nickname
FROM contacts
WHERE contacts.user_id = 47
AND contacts.contact_id = 69
UNION ALL
SELECT concat(users.firstname, ' ', users.lastname) nickname
FROM users
WHERE users.id = 69
AND NOT EXISTS (SELECT *
FROM contacts
WHERE contacts.user_id = 47
AND contacts.contact_id = 69);也不要对字符串文本使用双引号。是的,MySQL确实接受这一点,但是在标准的SQL单引号中,单引号是用于该工作的。而且,习惯了这一点并产生更多的可移植代码也是无害的。
https://stackoverflow.com/questions/63243237
复制相似问题