根据同一用户没有游标的同一用户在另一张表中所需记录的计数,为用户更新一个表中的列

时间:2018-07-28 18:15:23

标签: sql

我有2个表A and B。我需要根据定义的规则,根据table A在另一个表中的记录数,为所有用户标识更新userid中的列。如果另一个表中的记录的count是3,并且是该userID所必需的,则将IsCorrect标记为1,否则标记为0,如果count是2,并且要求是5,则{ {1}}为0例如以下是我要实现的目标

表A

IsCorrect

表B

UserID |  Required  |  IsCorrect
----------------------------------
1      |     SO;GO;PE       |     1
2      |     SO;GO;PE;PR    |     0
3      |     SO;GO;PE       |     1

我尝试在连接另一张表的表中使用Update,但是无法使用其中的一个。另外,由于其开销,也不想使用游标。我知道我必须为此规则创建一个存储过程,但是如何在不使用游标的情况下将userID传递给它呢?

这是我先前问题的更新。感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

使用meshView.setTranslateX(200); meshView.setTranslateY(200); meshView.setTranslateZ(200); 和聚合函数,然后进行条件更新的情况

sub-query

答案 1 :(得分:0)

这是PostgreSQL的解决方案:

update TableA
set IsCorrect =
  case when
    string_to_array(Required, ';') <@
    (select array_agg(PPName)
     from TableB
     where TableA.UserID = TableB.UserID)
      then 1
      else 0
  end;

您也可以看到它live on SQL Fiddle