我有两张桌子
Followers_list
User_name Followers_name
user 1 user 2
user 1 user 3
user 3 user 4
Final_table
User_name M_User Total Follower
user 1 user2 8 NULL
user 2 user 3 9 NULL
user 3 user 4 2 NULL
我想要的是像这样的改变表
User_name M_User Total Follower
user 1 user2 8 1
user 2 user 3 9 0
user 3 user 4 2 1
基本上我想匹配这两个表,看看user_name
是否跟随m_user
,如果是,则输入1 0
这是我到目前为止所做的,但它给了我"FL"."F_USER_NAME": invalid identifier
错误。
UPDATE FINAL_TABLE SET FB.FOLLOWER = (CASE
WHEN FB.USER_NAME = FL.USER_NAME AND FB.M_USER = FL.F_USER_NAME
THEN 1
ELSE 0
END);
FROM
FINAL_TABLE fb,
FOLLOWERS_LIST fl
我该如何解决这个问题?
答案 0 :(得分:0)
您可以使用子查询来检索要分配的值,如下所示:
UPDATE Final_table FB
SET FB.FOLLOWER =
(SELECT CASE WHEN COUNT(*) > 0 THEN 1
ELSE 0 END
FROM FOLLOWERS_LIST fl
WHERE FB.USER_NAME = FL.USER_NAME AND FB.M_USER = FL.F_USER_NAME);
以下是我的测试:https://livesql.oracle.com/apex/livesql/s/el9abzc95lirn6mrt4l0lfod7
答案 1 :(得分:0)
如果follower_list表具有唯一的值组合,您甚至不需要CASE子句:
UPDATE final_table a SET a.follower = (SELECT COUNT(*) FROM follower_list b WHERE a.user_name = b.user_name AND b.followes_name = a.m_user);
这是因为COUNT(*)聚合函数总是返回一个值,即使目标表中没有记录,并且user_name和followers_name的组合只有一个条目。这样你就会得到0或1。