内部连接中的类Mysql查询
我有一个mysql查询,但它返回0条记录。我不知道为什么它会返回零记录 这里是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
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解决方案有效。谢谢你,保罗。请在回答中张贴。我如何加入工作表和技能。。我不清楚。你能出示工作方案吗。投票通过了。谢谢你的回答。投票通过。