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