首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查连接的结果集是否包含SQL中的某些值

检查连接的结果集是否包含SQL中的某些值
EN

Stack Overflow用户
提问于 2014-03-14 00:04:58
回答 2查看 393关注 0票数 3

我有一个类似如下的数据库结构:

代码语言:javascript
复制
asset
+----+---------+
| id | user_id |
+----+---------+

user_favorite
+----------+---------+
| asset_id | user_id |
+----------+---------+

我希望创建一个查询,在这个查询中,我可以返回属于给定用户的所有资产,并返回一个布尔值,该布尔值指示该资产是否为他们的“最爱”。

我可以这样做,count()等于零意味着它不是最受欢迎的(但它看起来很老套,效率很低):

代码语言:javascript
复制
select distinct(a.asset_id), 
    (select count(*) 
     from user_favorite f 
     where f.user_id = MY USER ID 
       and f.asset_id = a.asset_id) 
from asset a 
left join user_favorite u on a.asset_id=u.asset_id 
where a.user_id = MY USER ID;

我尝试过这样做(但当多个用户收藏资产时,它会从资产中产生多个条目:

代码语言:javascript
复制
select distinct (a.asset_id), 
    (u.user_id in (MY USER ID)) 
from asset a 
left join user_favorite u on a.asset_id=u.asset_id 
where a.user_id = MY USER ID;

我也尝试过这个(但IN条件没有得到尊重):

代码语言:javascript
复制
select distinct(a.asset_id), 
    (u.user_id in (MY USER ID)) 
from asset a 
left join user_favorite u on a.asset_id=u.asset_id 
where a.user_id = MY USER ID group by u.user_id;

有没有什么好的方法来做这个查询?

EN

回答 2

Stack Overflow用户

发布于 2014-03-14 00:13:58

这就是我要做的,但我相信有很多可以接受的方法:

代码语言:javascript
复制
SELECT DISTINCT a.asset_id 
    ,CASE WHEN u.asset_id IS NULL 
          THEN 0 
          ELSE 1 
     END AS IsFavourite
FROM asset a
LEFT JOIN user_favourite u ON a.asset_id = u.asset_id 
                           AND a.user_id = u.user_id
WHERE a.userid = MY_USER_ID

LEFT JOIN偏好资产,如果当前没有偏好记录(u.asset_id IS NULL),则它不是偏好,否则它就是偏好。

票数 1
EN

Stack Overflow用户

发布于 2014-03-14 00:24:49

也许这会有一点帮助。

代码语言:javascript
复制
select 
     assetid,
     case when isnull(fav.user_id,0) =1 Then 0 else 1 end
form
     asset a
     left outer join 
     user_favourite fav
     on a.user_id = fav.user_id
where
     fav.id = 'foobar'
GROUP BY assetid, fav.user_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22384307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档