我有 3 张桌子,这是我的 1 张桌子,成员:
+----------+ | 用户 ID | +----------+ | 1 | +----------+
和我的表 2,成员 7:
+---------------+---------------+----- ----+ | 总工作年 | 工作范围 | 用户 ID | +---------------+---------------+----- ----+ | 1 | 金融;药房 | 1 | | 6 | 医生/诊断;药房 | 1 | | 10 | 会计;药学 | 1 | +---------------+---------------+----- ----+
和表 3,成员 7_2:
+-----------------+----------------+---------+ | 总工作年_2 | 知识技能 | 用户 ID | +-----------------+----------------+---------+ | 1 | 美国广播公司;定义;| 1 | | 6 | 大众;xyz;def | 1 | | 10 | 大众;xyz; | 1 | +-----------------+----------------+---------+
我需要找出regexp 'pharmacy' 所在JobScope
的user_id Members7
,并且该 regexp pharmacy 的总年数JobScope
>=0,还有 regexp 'def' in KnowledgeSkill
of Members7_2
,并且该 regexp 'def' 的总年数KnowledgeSkill
>= 0,
所以现在我们可以看到:
TotalWorkYear = 17
TotalWorkYear_2 = 7
user_id = '1'
这是我的查询:
选择成员.user_id, SUM(IF(成员7.JobScope REGEXP 'Pharmacy', Members7.TotalWorkYear, 0 ) ) yearsJobScope, Members7.JobScope AS JobScope, SUM(IF(成员7_2.KnowledgeSkill REGEXP 'def', Members7_2.TotalWorkYear_2, 0 ) ) yearsSkill, Members7_2.KnowledgeSkill AS KnowledgeSkill 来自会员 LEFT JOIN Members7 ON Members.user_id = Members7.user_id 左加入 Members7_2 ON Members.user_id = Members7_2.user_id 按 JobScope 正则表达式“药房”分组, KnowledgeSkill REGEXP 'def', user_id 拥有 JobScope REGEXP '药房' AND 年工作范围 >=0 和 KnowledgeSkill 正则表达式 'def' AND 年技能 >=0
但输出是:
+---------------+------------+ | 年工作范围 | 年技能 | +---------------+------------+ | 17 | 18 | +---------------+------------+
如果我删除了 HAVING 下的 REGEXP,我可以看到:
+---------+---------------+----------- ----------+------------+-------------- --+ | 用户 ID | 年工作范围 | 工作范围 | 年技能 | 知识技能 | +---------+---------------+----------- ----------+------------+-------------- --+ | 1 | 1 | 审计与税务;银行/金融;制药 | 6 | 大众;xyz;def | | 1 | 6 | 医生/诊断;药房 | 6 | 大众;xyz;def | | 1 | 10 | 一般/成本会计;药房 | 6 | 大众;xyz;def | +---------+---------------+----------- ----------+------------+-------------- --+
似乎只是TotalWorkYears
3 行的总和。
有什么办法可以解决吗?