【发布时间】:2014-05-12 07:49:35
【问题描述】:
我有以下三列表格:
tb1
userID itemID rating
此表包含有关用户对不同项目的评分的信息。 一个用户可以给多个项目评分,一个项目可以从多个用户那里获得评分。
我需要更新此表的评分值,以便 tb1 中的一半项目应该被分配 5 个评分,而另一半应该被分配 1 个评分。
注意:这意味着虽然用户可以对不同的项目给予不同的评分,但一个项目可以将其所有评分设为 1 或将所有评分设为 5。
最初,所有用户和项目对的评分值为 NULL。
可以使用两个单独的查询来执行此任务。
UPDATE tb1
SET rating = 5
WHERE itemID IN
(SELECT top(50) percent itemID
FROM tb1
GROUP BY itemID
ORDER BY newid());
UPDATE tb1
SET rating = 1
WHERE rating IS NULL
有没有办法将这两个查询组合成一个查询?
【问题讨论】:
-
您的
itemID数据类型是?? -
itemid -> smallint 和 rating -> 浮动
-
您需要详细说明,我对此的理解是:单击某个项目时,该项目的 50% 行将标记为 1,而其他 50% 的行将标记为特定用户 ID 的 5。跨度>
-
一个用户只能对一个项目进行一次评分。我想要的是一个更新查询,它将 50% 的项目(不是项目的行)的评级修改为 1,将其他 50% 的评级修改为 5。
标签: sql-server divide