我有一张如下表格,
s_id s_score name category subcategory
123 10 core account subscription
123 10 core values numeric
456 9 esr public movies
789 6 john service others
789 6 john digital others
我希望在我的id相同的情况下更新s_score列。我只需要一个分数,将另一个分数更新为null。预期产出如下。
s_id s_score name category subcategory
123 10 core account subscription
123 core values numeric
456 9 esr public movies
789 6 john service others
789 john digital others
提前致谢。
答案 0 :(得分:1)
根据ROW_NUMBER
函数的输出有条件地执行某些操作可能对您有所帮助。根据您的评论对您的数据模型做出几个假设,以下内容应该与您正在寻找的内容相近:
SELECT s.s_id,
case when row_number()
over (partition by s_id order by c.category) = 1 then s_score else null end as s_score,
s.name, c.category, c.subcategory
from s_scores s
join categories c on s.s_id = c.s_id
对于每个s_id,它为您提供该s_id中类别的行号。在row_number为1的情况下(即,它是s_id的第一个类别记录),它将返回分数。对于其他行号,它将返回null。
这是按类别排序,根据您的预期结果似乎是错误的,因此我的问题是哪一行应该得分,哪一行应该为空。如果您知道,只需更新order by
答案 1 :(得分:-1)
您可以使用以下更新查询;
update tableName set s_core='32' where s_id='123'