因此,我在mysql数据库中获得了用户对项目的评分,我想知道检查项目列表是否被用户评价的最佳方法。
第一种方法的好处是使用单一的查询,第二种方式不要求我提取用户曾经评价过的所有项目。哪一个更好?我对sql并不熟悉,所以我不太确定查询开销有多糟糕。此外,如果你有更好的建议,请随意给他们。
按照要求,下面是一个示例表。
CREATE TABLE ratings (
user id INT NOT NULL,
item_id INT NOT NULL,
rating INT NOT NULL
);发布于 2011-02-14 17:55:13
如果您对每个项使用单个查询,那么您将扫描/查找ratings很多次--您有多少项。也许我遗漏了一些东西,但到目前为止,我还不知道使用一个查询来检查所有项目有什么更好的。
此外,对集合的操作实际上是SQL最适合的,不是吗?
下面是一个检查所有项目列表的示例查询。
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假设一个用户只能对一个项目评分一次,所以我不打算在这里禁止复制。
https://stackoverflow.com/questions/4995048
复制相似问题