mysql - 在 SQL 结果中创建一个新列

标签 mysql sql

是否可以在 SQL 查询结果中创建一个新列?我正在考虑扩展我的电影数据库以处理多个用户。我有一个包含基本电影详细信息的表格,例如发布的标题类型情节评级年份,还有一个包含电影 ID 和用户标记为已观看的电影的用户 ID 列表的表格。我想为用户生成一个列表,并显示该用户是否看过它。

前 观看的矩阵 矩阵2 或者 矩阵2未看

或者创建一个包含电影 ID 列表 nada 用户想法和状态列的表会更好吗?

最佳答案

因此,您有用户和电影。一个用户可能看过很多电影。一部电影可能会被许多用户观看。这意味着它是一个多对多关系。

这是一个标准问题。解决方案:

  1. movies 表 - 电影 ID、标题、类型等 - 你已经知道了
  2. users_to_movies - 用户 ID、电影 ID、状态(或例如观看日期,如果未观看则为 NULL),如果需要则为任何其他数据
  3. users - 用户 ID、姓名、姓氏、电子邮件 - 任何您需要的内容。

users_to_movies 中的主键是一个复合键,由两列组成:(user_id, movie_id)。

users_to_movies 表是一个关联表。这是处于多对多关系中的两个表之间的“桥梁”。

示例:

id 为 5 的用户在 9 月 4 日下午 6 点观看了 Matrix 2(movies 表中的 id 12)。所以你 INSERT INTO users_to_movies VALUES(5, 12, '2014-04-09')。如果你想存储用户id 2没有看过Matrix 2的信息,你插入(2, 12, NULL)。

关于mysql - 在 SQL 结果中创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25713337/

相关文章:

php - 使用 MySQL 计算连续天数

sql - COUNT 中的条件子句

mysql - NOT IN 不工作的 SQL

mysql - 这些 SQL 查询之间有什么区别吗?

php - 从选择结果更新行

php - 在mysql中保存和查询区域

php - 在 Laravel 中向嵌套查询添加 where

mysql IN 子句不接受字符串变量

MySQL:如何根据多行的数值差异对SQL查询结果进行排序?

mysql - 将 Mysql 子查询转入连接