如何在 GROUP_CONCAT 中使用 ELSE IF?
How can I use ELSE IF inside GROUP_CONCAT?
我在 mySQL 查询中有一个 IF 语句,它运行良好:
GROUP_CONCAT(DISTINCT CONCAT("animal:",if(animal.name="monkey","fred",""),",color: ",animal.color) SEPARATOR " <br>") AS animals
我现在想添加一个 ELSEIF:
GROUP_CONCAT(DISTINCT CONCAT("animal:",if(animal.name="monkey","fred","")elseif(animal.name="cat","jane",""),",color: ",animal.color) SEPARATOR " <br>") AS animals
但我收到一条错误消息:
Syntax error or access violation: 1064 You have an error in your SQL
syntax
"if elseif endif" 是一个控制语句,而 if() 是 MySQL 中的一个函数。虽然他们有相同的名字,但他们是不同的东西。
如果有多个选项,可以使用 CASE 而不是 IF。
SELECT
GROUP_CONCAT(DISTINCT CONCAT("animal:",
CASE animal.name
WHEN "monkey" THEN "fred"
WHEN "cat" THEN "jane"
ELSE "other"
END,
",color: ",animal.color) SEPARATOR " <br>"
) AS animals
FROM (
SELECT 'monkey' AS 'name', 'brown' AS 'color'
UNION
SELECT 'cat', 'white'
UNION
SELECT 'dog', 'black'
) AS animal
您必须在 if
的 else
部分添加一个 if
group_concat(distinct concat("animal:",if(animal.name="monkey","fred",if(animal.name="cat","jane","")),",color: ",animal.color) separator " <br>") as animals
case
语法几乎相同
group_concat(distinct concat("animal:",case animal.name when "monkey" then "fred" when "cat" then "jane" case "dog" then "donald" else "",",color: ",animal.color) separator " <br>") as animals
我在 mySQL 查询中有一个 IF 语句,它运行良好:
GROUP_CONCAT(DISTINCT CONCAT("animal:",if(animal.name="monkey","fred",""),",color: ",animal.color) SEPARATOR " <br>") AS animals
我现在想添加一个 ELSEIF:
GROUP_CONCAT(DISTINCT CONCAT("animal:",if(animal.name="monkey","fred","")elseif(animal.name="cat","jane",""),",color: ",animal.color) SEPARATOR " <br>") AS animals
但我收到一条错误消息:
Syntax error or access violation: 1064 You have an error in your SQL syntax
"if elseif endif" 是一个控制语句,而 if() 是 MySQL 中的一个函数。虽然他们有相同的名字,但他们是不同的东西。
如果有多个选项,可以使用 CASE 而不是 IF。
SELECT
GROUP_CONCAT(DISTINCT CONCAT("animal:",
CASE animal.name
WHEN "monkey" THEN "fred"
WHEN "cat" THEN "jane"
ELSE "other"
END,
",color: ",animal.color) SEPARATOR " <br>"
) AS animals
FROM (
SELECT 'monkey' AS 'name', 'brown' AS 'color'
UNION
SELECT 'cat', 'white'
UNION
SELECT 'dog', 'black'
) AS animal
您必须在 if
else
部分添加一个 if
group_concat(distinct concat("animal:",if(animal.name="monkey","fred",if(animal.name="cat","jane","")),",color: ",animal.color) separator " <br>") as animals
case
语法几乎相同
group_concat(distinct concat("animal:",case animal.name when "monkey" then "fred" when "cat" then "jane" case "dog" then "donald" else "",",color: ",animal.color) separator " <br>") as animals