mysql in 加子查询,MySQL – 子查询和WHERE IN

我有一个项目属性表,以及一个user_favorites表,结构如下:

> id

> item_id

> user_id

>最爱(布尔)

当用户“收藏”某个项目时,它会使用项目ID,用户ID向该表添加一行,并将favorite属性设置为1(如果他们“不喜欢”,则将其更改为0).

我正在试图弄清楚如何在查看产品列表时显示用户的收藏夹.

我目前根据用户搜索输入进行查询并获取一系列产品ID.现在我想在这些产品中进行查询以创建产品信息表 – 我希望它包括该项目是否是用户最喜欢的.

我尝试过这样的事情:

select i.tid, i.name as name, i.image as image, (SELECT favorite FROM user_favorites WHERE user_id=77 ) as favorite

FROM items i

left join user_favorites ufav on (ufav.item_id = i.tid)

WHERE i.tid IN (79, 98, 105 . . .)

order by favorite DESC, name ASC

..但当然我得到一个Subquery返回超过1行错误

我也尝试过这样的事情:

select i.tid, i.name as name, i.image as image, ufav.favorite as favorite

FROM items i

left join user_favorites ufav on (ufav.item_id = i.tid)

WHERE i.tid IN (79, 98, 105 . . .) AND ufav.user_id=77

order by favorite DESC, name ASC

. . .但这只返回被收藏的项目(正如您所期望的那样).我想返回ID列表中的所有项目,但我也想知道哪些项目没有被“收藏”.

我可以在一个查询中执行此操作,还是运行两个单独查询的最佳选择?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值