如何在连接时返回备用列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在连接时返回备用列相关的知识,希望对你有一定的参考价值。
我有一个表,其中列出了我网站的功能。说它有三列:
id - url - landing_page
1 a.php a.html
2 b.php b.html
3 c.php c.html
4 d.php d.html
然后我有一个表,其中每个用户都有他可以显示的功能:
id - func
1 1
1 3
我的查询选择允许用户查看的那些功能并返回其URL。因此,对于示例数据,它返回
a.php,c.php
这是正确的。查询是:
SELECT titolo, descr1,descr2, url, url_opz
FROM `funzioni` JOIN funz_abilitate ON funz_abilitate.id_funzione=id
WHERE funz_abilitate.id_user = $id
我想知道如何改进查询以返回未经授权的功能的登录页面。所以结果应该是:
a.php,b.html,c.php,d.html
因此,对于那些不在用户范围内的页面,而不是URL,请返回Landing_page列的值。
如何在mysql 5.7上进行?
答案
您可以使用左联接,然后使用case
表达式检查是否允许该页面:
SELECT f.id, CASE WHEN id_use IS NULL 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
以上是关于如何在连接时返回备用列的主要内容,如果未能解决你的问题,请参考以下文章