让我先显示表结构,然后再问我的问题
假设表A
id | url |
1 | page
2 | home
3 | product
4 | sell
和表b
id |user_id | table a id
1 | 1 | 1
我想要的输出
id | url | ispermission
1 | page | 1
2 | home | 0
3 | product | 0
4 | sell | 0
权限中的(值1)表示它与用户映射,如表b所示,其他表示没有映射 以下是我的查询
select p.id,p.url,if(r.user_id=4,1,0) ispermission from
`table a` p
left join `table b` r on p.id=r.url_id
group by p.id,p.url order by ispermission DESC
此查询的效果很好,但在某些情况下它失败了,结果让我们考虑失败的情况(我得到的输出是类似的(请注意,此结果没有groupby)
id | url | ispermission
1 | page | 0
1 | page | 1
2 | home | 0
3 | product | 0
4 | sell | 0
通过分组使用,我得到类似
的结果 id | url | ispermission
1 | page | 0
2 | home | 0
3 | product | 0
4 | sell | 0
答案 0 :(得分:0)
您是否正在寻找类似的东西?
SELECT
T1.ID,
T1.Url,
COUNT(T2.[table a id]) Impression
FROM TableA T1
LEFT JOIN TableB T2 ON T1.ID = T2.[table a id]
GROUP BY T1.ID,T1.Url
答案 1 :(得分:0)
将LEFT JOIN
与CASE
表达式一起使用:
select a.id, a.url,
case when b.tableAid is not null then 1 else 0 end as ispermission
from TableA a
left join TableB b on b.tableAid = a.id