首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择inside IF语句

选择inside IF语句
EN

Stack Overflow用户
提问于 2015-10-14 15:46:16
回答 2查看 771关注 0票数 0
代码语言:javascript
复制
SELECT jargons.jargon as jargon, 
         jargons.description as description, 
         jargons.example as example,
         IF(jargons.rootJargon != 0, (SELECT jargon FROM jargons WHERE id = jargons.rootJargon), NULL) as rootJargonName
FROM jargons 
LEFT JOIN users ON users.id = jargons.addedBy 
ORDER BY jargons.id DESC

在jargons表中有两行:

代码语言:javascript
复制
"id"  "jargon"  "description"   "example"   "rootJargonName"    "rootJargon"
"2"   "Child"         "jd"           "1"             NULL                1
"1"    Root"          "sad"          "1"             NULL                0

为什么rootJargonNameChild行上返回null而不是Root

我试图做的是,如果rootJargon列不等于零,那么选择列中指定的不等于零的行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-14 15:52:38

这可能是您正在看到的表别名问题,但您可以使用LEFT JOIN重写它

代码语言:javascript
复制
SELECT      J.jargon as jargon, 
            J.description as description, 
            J.example as example,
            R.jargon As rootJargonName
FROM        jargons as J
LEFT JOIN   users   as U ON U.id = J.addedBy 
LEFT JOIN   jargons as R ON J.rootJargon = R.ID
ORDER BY    J.id DESC

如果希望保留IF()函数,可以使用以下内容,但是我建议使用LEFT JOIN

代码语言:javascript
复制
SELECT      J.jargon as jargon, 
            J.description as description, 
            J.example as example,
            IF(J.rootJargon != 0, (SELECT jargon FROM jargons as R WHERE R.id = J.rootJargon), NULL) as rootJargonName
FROM        jargons as J
LEFT JOIN   users   as U ON U.id = J.addedBy 
ORDER BY    J.id DESC
票数 3
EN

Stack Overflow用户

发布于 2015-10-14 15:59:29

你为什么不试个案子

像这样:

代码语言:javascript
复制
SELECT jargons.jargon as jargon, 
     jargons.description as description, 
     jargons.example as example,
     CASE 
         WHEN (jargons.rootJargon == 0) THEN NULL
         WHEN (jargons.rootJargon != 0) THEN
         (SELECT jargon FROM jargons WHERE id = jargons.rootJargon)
     END) AS 'rootJargonName'
FROM jargons 
LEFT JOIN users ON users.id = jargons.addedBy 
ORDER BY jargons.id DESC

我可能在语法上错了,但我想这就是我的想法.

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

https://stackoverflow.com/questions/33129902

复制
相关文章

相似问题

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