Mysql 在两个输出列上拆分的case语句选项
我有一个表,其中列出了我网站的功能。假设它有三列:Mysql 在两个输出列上拆分的case语句选项,mysql,join,select,mysql-5.7,Mysql,Join,Select,Mysql 5.7,我有一个表,其中列出了我网站的功能。假设它有三列: id_usr - url - landing_page 1 a.php a.html 2 b.php b.html 3 c.php c.html 4 d.php d.html 然后,我有一个表格,其中每个用户都可以显示以下功能: id_usr - func 1 1 1 3 此查询(来自) 正在返回预期的内容,但CASE语句中的两个选项在一个列中返
id_usr - url - landing_page
1 a.php a.html
2 b.php b.html
3 c.php c.html
4 d.php d.html
然后,我有一个表格,其中每个用户都可以显示以下功能:
id_usr - func
1 1
1 3
此查询(来自)
正在返回预期的内容,但CASE语句中的两个选项在一个列中返回。是否可以将它们分成两列(第一列用于案例url,第二列用于案例登录页面)
预期输出是这样的
id_usr - case url - case landing_page
1 a.php NULL
2 NULL b.html
3 c.php NULL
4 d.php NULL
虽然它实际返回:
id_usr - case
1 a.php
2 b.html
3 c.php
4 d.php
您需要两个大小写表达式:
SELECT f.id,
CASE WHEN id_user IS NOT NULL THEN url END url,
CASE WHEN id_user IS NULL THEN landing_page END landing_page
FROM funzioni f
LEFT JOIN funz_abilitate fa ON fa.id_funzione = f.id AND fa.id_user = $id
您还必须使用表的名称/别名限定所有列名,以避免歧义。只需完全删除大小写,然后选择f.id、url、landing_pageno,这将返回两个值。我需要有url或登录页面,但我不认为我理解与你现在的区别。你能举一个期望结果的例子吗?@Aioros我编辑了这个问题,以便更好地解释为什么这个问题值得投反对票。怎么了?
SELECT f.id,
CASE WHEN id_user IS NOT NULL THEN url END url,
CASE WHEN id_user IS NULL THEN landing_page END landing_page
FROM funzioni f
LEFT JOIN funz_abilitate fa ON fa.id_funzione = f.id AND fa.id_user = $id