具有多个值的SQL列

Sij*_*ose 0 mysql sql database

我想知道如何在sql列中存储多个值,或者哪个是在sql列中存储值的最佳方法.

在电影表中考虑,电影将具有多种类型,
例如,
类型:"动作,冒险,幻想"
类型:"冒险,戏剧,幻想,惊悚"

,这是将类型值存储在数据库中的最佳方式.

jue*_*n d 6

这是一种经典的n到m关系.它的工作原理如下

movies table
------------
id
name
...


genres table
------------
id
name


movie_genres table
------------------
movie_id
genre_id
Run Code Online (Sandbox Code Playgroud)

movie_genres然后该表包含电影的每个类型的一个记录.例:

movie_genres
------------
movie_id  |  genre_id
1         |  1
1         |  2
1         |  13
Run Code Online (Sandbox Code Playgroud)

要获得电影的类型,请执行以下操作:

select g.name as genre_name
from genres g
join movie_genres mg on mg.genre_id = g.id
join movies m on m.id = mg.movie_id
where m.name = 'star wars'
Run Code Online (Sandbox Code Playgroud)

  • @SijoJose 流派表不会有大量行,但 movie_genres 表会有。 (2认同)