不知道如何使用计算和列连接

szqfcxe2  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(363)

我不知道如何在计算的基础上联接表。我必须使用一个子字符串来获取字符串中需要与另一个表中的列匹配的部分。我不知道如何加入他们,真的不知道从哪里开始。
我尽我所能尝试了一切,但实际上我参加了一个初学者的课程,现在不得不自己照顾自己。

Select *
From five9_data.calllog join warbird.user
ON warbird.attr_employee = substring(five9_data.calllog.agent, 4,position('@' in five9_data.calllog.agent)- 4)
Group By warbird.attr_employee
Order warbird.attr_employee
Limit 100

我在select命令中尝试了上述方法,但发现它不起作用,并且我需要在join语句中使用计算,但不知道语法/公式。举几个尽可能简单的例子就好了。我也有问题,与集团的命令,由这个。
如上图所示。

41zrol4v

41zrol4v1#

通常情况下 join 情况如下:

from t1 join
     t2
     on t1.empid = concat('%', t2.agent, '%')

或者,您可以使用以下表达式:

from t1 join
     t2
     on t1.empid = substring(t2.agent, 4, position('@' in t2.agent) - 4)

编辑:
至于您的示例代码,我将其编写为:

Select b.attr_employee, . . .   -- aggregation functions go here
From five9_data.calllog cl join
     warbird.user u
     on u.attr_employee = substring(cl.agent, 4, position('@' in cl.calllog.agent) - 4)
Group By u.attr_employee
Order u.attr_employee
Limit 100;

以下是要注意的更改:
表别名使查询更易于编写和读取。
使用时 GROUP BY 中唯一未聚合的列 SELECT 应该是 GROUP BY 钥匙。其余的应该加起来。
你的问题是 warbird.attr_employee 未定义,因为缺少表名。然而, u 更容易写和读。

s1ag04yj

s1ag04yj2#

from t1 join
     t2
     on t1.empid = substring(t2.agent, 4, position('@' in t2.agent) - 4)

相关问题