如何在连接时返回备用列

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

以上是关于如何在连接时返回备用列的主要内容,如果未能解决你的问题,请参考以下文章

如何返回一行但连接原因列[重复]

LINQ 如何在一对多连接中指定选择某些列

如何根据连接查询中的一列返回最大行? [复制]

Xamarin ListView 备用列颜色

如何从 SqlDataReader 获取列的表名

使用 Powershell 的备用拆分 CSV 列 [关闭]