我有两个表users
和skills
。表格中包含类似
用户表
id name skills_id
1 user1 2,4
2 user2 1,3
技能表
id skills
1 skill1
2 skill2
3 skill3
4 skill4
我想通过使用skill_id来连接这两个表并显示技能名称。
我尝试了以下查询:
select * from users left join skills on skills.id in( users.skills_id )
但是它没有锻炼。帮我获取数据。
答案 0 :(得分:0)
在on子句中使用webdetect = vision_client.web_detection(blob_source)
jsonObj = MessageToJson(webdetect)
find_in_set()
输出:
select users.id, name, group_concat(skills) as val
from users left join skills
on find_in_set(skills.id,users.skills_id)>0
group by id,name
答案 1 :(得分:0)
通常,您应该避免在MySQL表中存储未标准化的CSV(逗号分隔)数据。最好在单独的记录中表示每个用户技能关系。作为解决方法,我们可以尝试在此处使用FIND_IN_SET
SELECT *
FROM users u
INNER JOIN skills s
ON FIND_IN_SET(s.id, u.skills_id) > 0;
或者,我们可以尝试将LIKE
与逗号配合使用:
SELECT *
FROM users u
INNER JOIN skills s
ON CONCAT(',', u.skills_id, ',') LIKE CONCAT('%,', s.id, ',%');
答案 2 :(得分:0)
skills_id
不是一系列值(如in
运算符所期望的),它是一个用逗号分隔值的字符串。您可以使用find_in_set
函数在其中进行搜索:
SELECT *
FROM users
LEFT JOIN skills ON FIND_IN_SET(skills.id, users.skills_id) > 0