数据库
首页 > 数据库> > mysql-子选择数未知时的自连接

mysql-子选择数未知时的自连接

作者:互联网

我有一个表格,其中将配偶和子女链接到主要用户.

+----------------+-------------------+----------+------------------------------+------------------+
|  Id | User_ID           | Rel_Type | Applno                       | RelationWith     |
+----------------+-------------------+----------+------------------------------+------------------+
|        1234756 | aambu ghosha      | self     | 201708180921      | aambu ghosha     |
|        1235146 | parvati ghosha    | spouse   |  NULL | aambu ghosha     |
|        1235147 | ananta ghosha    | Children   | 201708180921      | aambu ghosha     |
|         500787 | anant01011975     | self     | 20170811171403999L    | anant01011975    |
|         501626 | chandu1988        | children | NULL                         | anant01011975    |
|        1706064 | atmaram sutar     | self     | 20170821094537517L  | atmaram sutar    |
|        1706494 | venu sutar        | spouse   | 20170821094537517L  | atmaram sutar    |

在上述示例中,主申请人“ aambu ghosha”是“自己”(主申请人).配偶和子女(parvati和ananta)需要被视为单一申请人.

aambu ghosha 3
anant01011975 2
atmaram sutar 2

主申请人数应包括其家庭成员.预期结果如上所示.
我猜这可以通过自我加入来实现,但是我不确定有多少孩子链接到主申请人.什么是找到计数的最佳方法?

http://sqlfiddle.com/#!9/30945c/2/0

更新:

我如何自行加入和更新链接到主申请人的申请号?例如第二条记录NULL值应更改为201708180921.

解决方法:

假设您只有一个孩子,这将起作用

SELECT userid, count(*)
FROM tab p
JOIN tab ch ON p.user_id = ch.RelationWith
WHERE p.user_id = p.RelationWith
GROUP BY userid

实际上,更简单的查询也会产生您要求的结果

SELECT RelationWith, count(*)
FROM tab
GROUP BY RelationWith

标签:aggregate-functions,sql,mysql
来源: https://codeday.me/bug/20191025/1930879.html