mysql - 从连接表中选择名称,其中连接表行 id 在父表列集中

标签 mysql join

我有两张 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/

相关文章:

mysql - 不喜欢来自两个表

php - 提交后根据时间戳在时间间隔内禁用触发器

mysql - 通过 PhpStorm 进行 SSH 隧道 MySQL 连接和套接字连接

MySQL 5.5 : Efficient way to copy the same user information with different IDs

mysql - MYSQL 中的 SELECT INNER JOIN SELECT by

MYSQL 线程限制

mysql - 将表id合并并替换为两个表SQL的字符串

c# - .NET Linq 左连接

ruby - 如何使用 ruby​​ 项目解决 postgresql 中的 AmbigouslyColumn 错误

php - 我应该在这里使用哪个 SQL 连接?