Mysql SQL如何在列变量位于其他列时更新行中的列

Mysql SQL如何在列变量位于其他列时更新行中的列,mysql,sql,sum,Mysql,Sql,Sum,我需要有关SQL查询的帮助: 以下是我的草稿,例如SQL: 我有5个示例行,5个“类别”列中有一些变量:“catid、parentid、parentid2、parentid3和parentid4”,6个列作为总和 我需要在EventScheduler或CRON中设置SQL查询,以便从parentid、parentid2、parentid3或parentid4中包含catid的所有行中,为每个catid更新SUM变量,并使用SUM列“SUM”,或者catid的parentid类似于NULL,但p

我需要有关SQL查询的帮助:

以下是我的草稿,例如SQL:

我有5个示例行,5个“类别”列中有一些变量:“catid、parentid、parentid2、parentid3和parentid4”,6个列作为总和

我需要在EventScheduler或CRON中设置SQL查询,以便从parentid、parentid2、parentid3或parentid4中包含catid的所有行中,为每个catid更新SUM变量,并使用SUM列“SUM”,或者catid的parentid类似于NULL,但parentid、parentid2中有许多行包含此catid,parentid3或parentid4-然后我需要使用该问题行中所有“sum”列的sum更新此行

在本例中,有5行具有类似catid的142。 有R2和R3,其中142为catid。然后我需要用19000(SUM/R1+SUM/R2+SUM/R3+SUM/R4+SUM/R5)更新R2和R3的SUM列

有什么可以帮忙的吗?我真的很感激

SELECT q.userid, q.categoryid, sum(q.pointsasall) as ilosc FROM qa_catpoints q 
WHERE (q.categoryid = q.parentid OR q.parentid2 OR q.parentid3 OR q.parentid4) 
group by q.userid, q.categoryid ORDER BY q.userid ASC
表结构:

CREATE TABLE `qa_catpoints` (
  `categoryid` int(11) NOT NULL,
  `catname` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `parentid` int(11) NOT NULL,
  `parentid2` int(11) NOT NULL,
  `parentid3` int(11) NOT NULL,
  `parentid4` int(11) NOT NULL,
  `userid` int(11) NOT NULL,
  `pointsasall` int(11) NOT NULL,
  `pointsasall2` int(11) NOT NULL
)
查询成功后的预期输出:


到目前为止您尝试了什么?从qa_catpoints q中选择q.userid、q.categoryid、sum(q.pointsasall)作为sumall,其中(q.categoryid=q.parentid或q.parentid或q.parentid2或q.parentid3或q.parentid4)按q.userid分组,q.categoryid按
q
userid
ASC诸如此类,但它只给我有限catid的行。我需要所有的CATID…你能提供完整的表格结构吗?完成,编辑后你还可以发布你的示例的预期输出吗?