内部连接中的类Mysql查询

内部连接中的类Mysql查询,mysql,sql,Mysql,Sql,我有一个mysql查询,但它返回0条记录。我不知道为什么它会返回零记录 这里是MySql查询 SELECT a.skills_name FROM skills a inner join job b ON a.skills_name like b.keywords GROUP BY a.skills_name ORDER BY a.skills_name ASC limit 15 技能表中的数据如下所示 skills_id skills_name 1 It sup

我有一个mysql查询,但它返回0条记录。我不知道为什么它会返回零记录

这里是MySql查询

SELECT a.skills_name 
FROM skills a inner join job b 
ON a.skills_name like b.keywords 
GROUP BY a.skills_name 
ORDER BY a.skills_name ASC limit 15
技能表中的数据如下所示

skills_id   skills_name
        1   It support
        2   IT technician
        4   sales
sales, marketing
IT Support, IT Head
作业表中的数据如下所示

skills_id   skills_name
        1   It support
        2   IT technician
        4   sales
sales, marketing
IT Support, IT Head

请告知。

您关于的
条款有误。没有说“它是否相似”,而是说“它是否包含X”(并且使用
%
可以指定后面和/或前面的内容并不重要)

此外,没有理由使用
分组方式
。当您想要执行一些聚合功能时,例如
求和
/
计数
,可以使用
分组依据。我假设您在这里使用它来获得每个值一次。为此目的

使用以下命令:

SELECT a.skills_name 
FROM skills a 
join job b 
on lower(b.keywords) like ('%' + lower(a.skills_name) + '%')
ORDER BY a.skills_name
limit 15

你的
on
子句是错误的。没有说“它是否相似”,而是说“它是否包含X”(并且使用
%
可以指定后面和/或前面的内容并不重要)

此外,没有理由使用
分组方式
。当您想要执行一些聚合功能时,例如
求和
/
计数
,可以使用
分组依据。我假设您在这里使用它来获得每个值一次。为此目的

使用以下命令:

SELECT a.skills_name 
FROM skills a 
join job b 
on lower(b.keywords) like ('%' + lower(a.skills_name) + '%')
ORDER BY a.skills_name
limit 15

如果您选择join的作业表列为关键字 似乎您不需要like和group by(如果您没有聚合功能,则使用distinct)


如果您选择join的作业表列为关键字 似乎您不需要like和group by(如果您没有聚合功能,则使用distinct)


使用不带占位符(“%”)的
LIKE
与使用
=
相同。如果连接条件的伪代码为
b。关键字包含a.skills\u name
,则需要
b.关键字,如coancat(“%”,a.skills\u name“%”)

如前所述,您可以使用
DISTINCT
关键字来删除重复项,而不是
groupby
-(
选择DISTINCT a.skills\u name

您还应该考虑使用规范化模式,而不是在字符串列中存储多个值。在您的情况下,

作业
表如下所示:

id | keyword
----------------
 1 | sales
 1 | marketing
 2 | IT Support
 2 | IT Head
那么您的查询将是:

SELECT DISTINCT a.skills_name 
FROM skills a inner join job b 
    ON b.keyword = a.skills_name
ORDER BY a.skills_name ASC limit 15

使用不带占位符(“%”)的
LIKE
与使用
=
相同。如果连接条件的伪代码为
b。关键字包含a.skills\u name
,则需要
b.关键字,如coancat(“%”,a.skills\u name“%”)

如前所述,您可以使用
DISTINCT
关键字来删除重复项,而不是
groupby
-(
选择DISTINCT a.skills\u name

您还应该考虑使用规范化模式,而不是在字符串列中存储多个值。在您的情况下,

作业
表如下所示:

id | keyword
----------------
 1 | sales
 1 | marketing
 2 | IT Support
 2 | IT Head
那么您的查询将是:

SELECT DISTINCT a.skills_name 
FROM skills a inner join job b 
    ON b.keyword = a.skills_name
ORDER BY a.skills_name ASC limit 15

让我试试。投票结果出来了,仍然没有创纪录的回报。any advice.@CalculatingMachine-上面的代码在secod
%
之前缺少
+
,因此无法编译。这会让我努力的。投票结果出来了,仍然没有创纪录的回报。any advice.@CalculatingMachine-上面的代码在secod
%
之前缺少
+
,因此无法编译。这将
适用于b.关键字,如coancat(“%”,a.skills_name,“%”)
你能给出预期的输出吗?@PaulSpiegel解决方案有效。谢谢你,保罗。请在回答中张贴。我如何加入工作表和技能。。不清楚您能否在b.关键字(如coancat(“%”,a.skills_name,“%”)上显示工作模式
您能否给出预期的输出?@PaulSpiegel解决方案有效。谢谢你,保罗。请在回答中张贴。我如何加入工作表和技能。。我不清楚。你能出示工作方案吗。投票通过了。谢谢你的回答。投票通过。