Mysql 从表中选择,其中列在字符串中包含多个逗号分隔的值
我有Mysql 从表中选择,其中列在字符串中包含多个逗号分隔的值,mysql,select,Mysql,Select,我有用户表 users -------------------------------- | user_id | name | hobbies_id | -------------------------------- | 1 | John | 1,5,8,12,21 | | ... 使用包含其他表中爱好id的业余爱好id列-业余爱好: hobbies ----------------------- | hobby_id | name | --------------
用户
表
users
--------------------------------
| user_id | name | hobbies_id |
--------------------------------
| 1 | John | 1,5,8,12,21 |
| ...
使用包含其他表中爱好id的业余爱好id
列-业余爱好
:
hobbies
-----------------------
| hobby_id | name |
-----------------------
| 1 | painting |
| 2 | movies |
| ...
| 8 | football |
| ...
现在,我想从users
表中选择cabiods\u id
的用户,即1,8,21
因此,上表中的John符合矿山条件,应包含在输出中
如果可能的话,我想通过单个查询来完成它。
不管怎么说,我一开始就卡住了
从用户中选择*,其中???
此注释太长
通过添加一个每个名称和名称各一行的连接表来修复数据结构。以下是不在字符串中存储多个ID的一些原因:
- 在关系代数中,列通常包含一个值
- SQL有一个很好的列表数据结构。它被称为“表”,而不是“列”
- 类型很重要。整数应存储为整数,而不是字符串
- 应使用外键关系强制执行对其他表的引用。字符串中的事物列表不支持这些
- 结果查询不必要地复杂
了解称为“连接表”的内容。此注释太长 通过添加一个每个名称和名称各一行的连接表来修复数据结构。以下是不在字符串中存储多个ID的一些原因:
- 在关系代数中,列通常包含一个值
- SQL有一个很好的列表数据结构。它被称为“表”,而不是“列”
- 类型很重要。整数应存储为整数,而不是字符串
- 应使用外键关系强制执行对其他表的引用。字符串中的事物列表不支持这些
- 结果查询不必要地复杂
了解一种叫做“连接表”的东西。Hm。这就是我没有意识到的存在的解决方案。谢谢,我会了解更多的。但现在请检查我是否理解正确。假设我有两个id为1和2的
用户
,还有三个id为1,2,3的爱好
。我的连接表应该如下所示:关系id(int)、用户id(int)、爱好id(int)
。其中包含6行:第1行-1,1,1
,第2行-2,1,2
,第3行3,1,3
,第4行-4,2,1
,第5行-5,2,2
,第6行6,2,3
。我的想法正确吗?嗯。这是我没有意识到的存在的解决方案。谢谢,我会了解更多的。但现在请检查我是否理解正确。假设我有两个id为1和2的用户
,还有三个id为1,2,3的爱好
。我的连接表应该如下所示:关系id(int)、用户id(int)、爱好id(int)
。其中包含6行:第1行-1,1,1
,第2行-2,1,2
,第3行3,1,3
,第4行-4,2,1
,第5行-5,2,2
,第6行6,2,3
。我的想法正确吗?