我有一个表,其中列出了我网站的功能。说它有三列:
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
此查询(来自this question of mine)
SELECT f.id, CASE WHEN id_user IS NOT NULL THEN url ELSE landing_page END
FROM funzioni f
LEFT JOIN funz_abilitate fa ON fa.id_funzione = f.id AND fa.id_user = $id
返回预期值,但CASE语句的两个选项在同一列中返回。是否可以将它们分为两列(第一列为案例url,第二列为案例Landing_page)?
预期的输出是这样的
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
此外,您还必须使用表的名称/别名来限定所有列名,以避免产生歧义。