我正在创建一个类似 Stack Overflow 的网站。
当我们在“stack-overflow”上发布新问题时,我们会给出一些与我们的问题相关的标签。
我在表 question
中有一个名为 q_lated_tag_ids
(问题相关标签 ID)的字段。
我使用此字段来存储与已发布问题相关的所有以逗号(,
)分隔的tag_ids
。
表格问题>>
q_id | q_title | q_ralated_tag_ids
1 | title1 | 4,5,8
2 | title2 | 6,8,1
3 | title3 | 2,81,13
4 | title4 | 8
3 | title3 | 2,87
4 | title4 | 83
表格答案>>
t_id | t_name | t_description
1 | java | java is ...
2 | php | php is ...
3 | ajax | ajax is ...
4 | c++ | c++ is ...
5 | perl | perl is ...
8 | java8 | java8 is...
...
现在的问题是>>
我想获取/选择与 tag-id = 8
相关或与 java8
标签
为此,我创建了一个查询>>
select * from question where (
q_related_tag_ids like '8'
or q_related_tag_ids like '%,8,%'
or q_related_tag_ids like '%,8')
有没有人有更好的方法?
最佳答案
我将创建一个表来建立两个表之间的关系。
表格问题>>
q_id | q_title
1 | title1
2 | title2
3 | title3
4 | title4
3 | title3
4 | title4
表格答案>>
t_id | t_name | t_description
1 | java | java is ...
2 | php | php is ...
3 | ajax | ajax is ...
4 | c++ | c++ is ...
5 | perl | perl is ...
8 | java8 | java8 is...
表关系>>
t_id | q_id
4 | 1
5 | 1
8 | 1
6 | 2
8 | 2
1 | 2
关系表的主键是使用两个外键之间的串联创建的,并且是唯一的
从问题 WHERE q_id IN 中选择 *(从关系中选择 q_id WHERE t_id = 8)
我建议你看看Merise方法
关于mysql - 用于匹配子查询的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49921120/