首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可伸缩的单个查询,该查询使用多个唯一主ids来提取行

可伸缩的单个查询,该查询使用多个唯一主ids来提取行
EN

Stack Overflow用户
提问于 2011-02-12 23:25:39
回答 1查看 38关注 0票数 0

因此,我在mysql数据库中获得了用户对项目的评分,我想知道检查项目列表是否被用户评价的最佳方法。

  1. 我可以在一个查询中提取用户曾经对其进行评级的所有项,然后遍历该集合,查找列表中的项。
  2. 的另一种方法是使用一个查询来检查每个项目是否被评级。

第一种方法的好处是使用单一的查询,第二种方式不要求我提取用户曾经评价过的所有项目。哪一个更好?我对sql并不熟悉,所以我不太确定查询开销有多糟糕。此外,如果你有更好的建议,请随意给他们。

按照要求,下面是一个示例表。

代码语言:javascript
复制
CREATE TABLE ratings (
  user id INT NOT NULL, 
  item_id INT NOT NULL, 
  rating INT NOT NULL
);
EN

回答 1

Stack Overflow用户

发布于 2011-02-14 17:55:13

如果您对每个项使用单个查询,那么您将扫描/查找ratings很多次--您有多少项。也许我遗漏了一些东西,但到目前为止,我还不知道使用一个查询来检查所有项目有什么更好的。

此外,对集合的操作实际上是SQL最适合的,不是吗?

下面是一个检查所有项目列表的示例查询。

代码语言:javascript
复制
SELECT
  il.item_id,
  CASE
    WHEN r.item_id IS NULL THEN 'No'
    ELSE 'Yes'
  END AS IsRated
FROM itemlist il
  LEFT JOIN ratings r ON il.item_id = r.item_id
                     AND rating > 0
                     AND user = @user

假设一个用户只能对一个项目评分一次,所以我不打算在这里禁止复制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4995048

复制
相关文章

相似问题

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