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”)