Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在IF语句中选择inside_Mysql_Sql - Fatal编程技术网

Mysql 在IF语句中选择inside

Mysql 在IF语句中选择inside,mysql,sql,Mysql,Sql,我在术语表中有两行: 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 F

我在术语表中有两行:

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
为什么
rootJargonName
返回
null
而不是
Child
行上的
Root


我想做的是,如果
rootJargon
列不等于零,则选择列中指定的id不等于零的行。

您可能看到了表别名问题,但可以使用
左联接重写此问题:

"id"  "jargon"  "description"   "example"   "rootJargonName"    "rootJargon"
"2"   "Child"         "jd"           "1"             NULL                1
"1"    Root"          "sad"          "1"             NULL                0
如果您想保留
If()
函数,可以使用以下方法,但是我建议使用
左连接

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

这可能是您看到的表别名问题,但您可以使用
左连接重写此问题:

"id"  "jargon"  "description"   "example"   "rootJargonName"    "rootJargon"
"2"   "Child"         "jd"           "1"             NULL                1
"1"    Root"          "sad"          "1"             NULL                0
如果您想保留
If()
函数,可以使用以下方法,但是我建议使用
左连接

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

这可能是您看到的表别名问题,但您可以使用
左连接重写此问题:

"id"  "jargon"  "description"   "example"   "rootJargonName"    "rootJargon"
"2"   "Child"         "jd"           "1"             NULL                1
"1"    Root"          "sad"          "1"             NULL                0
如果您想保留
If()
函数,可以使用以下方法,但是我建议使用
左连接

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

这可能是您看到的表别名问题,但您可以使用
左连接重写此问题:

"id"  "jargon"  "description"   "example"   "rootJargonName"    "rootJargon"
"2"   "Child"         "jd"           "1"             NULL                1
"1"    Root"          "sad"          "1"             NULL                0
如果您想保留
If()
函数,可以使用以下方法,但是我建议使用
左连接

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

你为什么不试试呢

比如:


我可能在语法上有些地方错了,但我想这就是我的想法……

你为什么不试试这个案例呢

比如:


我可能在语法上有些地方错了,但我想这就是我的想法……

你为什么不试试这个案例呢

比如:


我可能在语法上有些地方错了,但我想这就是我的想法……

你为什么不试试这个案例呢

比如:



我可能在语法的某个地方出错了,但我认为这就是我的想法……

尝试在两个
行话
引用中添加一个表别名-可能是试图比较同一个表引用中的
id
rootJargon
。尝试在这两个
行话
引用中添加一个表别名-这很简单可能是试图比较同一表引用中的
id
rootJargon
。尝试向两个
行话
引用添加表别名-可能是试图比较同一表引用中的
id
rootJargon
。尝试向这两个表添加表别名
jargons
references-它可能试图比较同一个表引用中的
id
rootJargon
。好吧,这是可行的。是否有任何方法可以使用IF语句实现这一点?只是想知道。@AliDemirci您可以使用
IF()
函数重写它,但这会导致对返回的每个记录进行子查询。一般来说,使用
左外部联接
会更好,但我将更新答案,以包含
IF()
修复。现在这是完美的答案。非常感谢。等一下。如果我想为NULL指定另一个值怎么办?@AliDemirci如果你想为
NULL
数据指定另一个值,你可以使用
COALESCE()
函数。例如:
COALESCE(R.jargon,'OtherValue')
好吧,这很有效。是否有任何方法可以使用IF语句实现这一点?只是想知道。@AliDemirci您可以使用
IF()
函数重写它,但这会导致对返回的每个记录进行子查询。一般来说,使用
左外部联接
会更好,但我将更新答案,以包含
IF()
修复。现在这是完美的答案。非常感谢。等一下。如果我想为NULL指定另一个值怎么办?@AliDemirci如果你想为
NULL
数据指定另一个值,你可以使用
COALESCE()
函数。例如:
COALESCE(R.jargon,'OtherValue')
好吧,这很有效。是否有任何方法可以使用IF语句实现这一点?只是想知道。@AliDemirci您可以使用
IF()
函数重写它,但这会导致对返回的每个记录进行子查询。一般来说,使用
左外部联接
会更好,但我将更新答案,以包含
IF()
修复。现在这是完美的答案。非常感谢。等一下。如果我想为NULL指定另一个值怎么办?@AliDemirci如果你想为
NULL
数据指定另一个值,你可以使用
COALESCE()
函数。例如:
COALESCE(R.jargon,'OtherValue')
好吧,这很有效。是否有任何方法可以使用IF语句实现这一点?只是想知道。@AliDemirci您可以使用
IF()
函数重写它,但这会导致对返回的每个记录进行子查询。一般来说,使用
左外部联接
会更好,但我将更新答案,以包含
IF()
修复。现在这是完美的答案。非常感谢。等一下。如果我想为NULL指定另一个值怎么办?@AliDemirci如果你想为
NULL
数据指定另一个值,你可以使用
COALESCE()
函数。例如:
COALESCE(R.行话,“OtherValue”)