首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想根据条件返回一条记录

我想根据条件返回一条记录
EN

Stack Overflow用户
提问于 2020-08-04 08:46:54
回答 1查看 29关注 0票数 0

我正在尝试基于mysql执行一个简单的if else查询。

代码语言:javascript
运行
复制
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行选择昵称)。

有人能指点我这里出了什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-04 08:59:59

不能在查询中使用控制流语句(如IF )。

但是,您可以使用两个查询(其中一个查询根据您的情况返回空集)实现您显然想要做的事情。

代码语言:javascript
运行
复制
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单引号中,单引号是用于该工作的。而且,习惯了这一点并产生更多的可移植代码也是无害的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63243237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档