我有两张 table 。 技能
和用户技能
。
技能行
type:1
name:'Web Development'
id: 1
<小时/>
type:1
name:'Graphic Design'
id: 2
用户技能行
user_id: 1
skill_type: 1
skills: '1,2'
以下查询仅返回第一行,而不是像我预期的那样返回两行。我想知道为什么,以及这种类型的加入是否可能/一个好的做法。
查询
SELECT b.name,b.type
FROM userskill a
JOIN skill b ON a.skill_type=b.type
WHERE a.user_id="1" AND b.id IN(a.skills)
您可能想知道为什么查询不尝试限制 skill_type
这是因为我想返回所有用户技能的列表,然后可以在应用程序中按类型排序。我认为这比执行许多查询更合适。
最佳答案
用户技能表有一个具有多个值的属性,您应该允许用户技能表的多行具有相同的信息但不同的技能
示例:
user_id skill_type skill
1 1 1
1 1 2
在这种情况下,主键将是所有属性
引用:How to store multiple values in single column where use less memory?
编辑
查询将是:
SELECT b.name,b.type
FROM userskill a
JOIN skill b ON a.skill_type=b.type
WHERE a.user_id="1"
关于mysql - 从连接表中选择名称,其中连接表行 id 在父表列集中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35103038/