首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有if和CONCAT的MySQL语句

带有if和CONCAT的MySQL语句
EN

Stack Overflow用户
提问于 2020-05-15 01:24:01
回答 2查看 38关注 0票数 0

我有一个表,有3列ID,名称,楼层和天花板。我需要构建一个select语句来连接或不连接下限和上限的值。如果地板和天花板相同,那么我只需要返回Floor,但如果它们不同,我希望将列连接为范围列。

以下是示例数据:

代码语言:javascript
复制
ID | Name | Floor | Ceiling
---------------------------
1    name1  1       2
2    name2  5       5
3    name3  7       9

该语句应返回以下内容:

代码语言:javascript
复制
ID | Name | Range
-----------------
1    name1  1-2
2    name2  5
3    name3  7-9

这是我到目前为止的声明,我做错了什么?

代码语言:javascript
复制
SELECT name,
(CASE
 WHEN floor != ceiling THEN CONCAT(floor, '-', ceiling) AS range
 ELSE floor AS range
END)
FROM tablename

任何帮助都将不胜感激!

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-15 01:34:50

你已经很接近了。您不需要将AS range放在CASE表达式中,而是放在表达式的末尾。

代码语言:javascript
复制
SELECT name,
    CASE
    WHEN floor != ceiling THEN CONCAT(floor, '-', ceiling)
    ELSE floor
    END AS range
FROM tablename
票数 0
EN

Stack Overflow用户

发布于 2020-05-15 01:35:49

您应该将别名range放在CASE子句之外,如下所示:

代码语言:javascript
复制
SELECT name,
(CASE
 WHEN floor != ceiling THEN CONCAT(floor, '-', ceiling)
 ELSE floor
END) AS range
FROM tablename;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61803560

复制
相关文章

相似问题

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