【问题标题】:Add more than one data in a field in SQLSQL在一个字段中添加多个数据
【发布时间】:2015-01-12 22:54:17
【问题描述】:

我有一个名为 'users' 的表。在 'users' 表中,包含一个名为 'chapter_id' 的字段。 另一个名为“chapters”的表包含特定主题的所有章节名称,与它们的 id 相关。我想在用户的“章节”中添加多个“id”到“chapter_id”。 我可以在“章节”中的“用户”中添加一个“章节 ID”。 这是我的用户表:

-------------------------
id | name | chapter_id  |
-------------------------
1  | ABC  |    8        |
-------------------------

这是我的“chaprers”表:

-------------------------
id | name |   subject   |
-------------------------
1  | XYZ  |   PQR       |
-------------------------

我用来从 'chapters' where 'id' = 'some id' in table 'users' 中选择名称的查询是:

SELECT `name`, subject FROM chapters WHERE id = (SELECT chapter_id FROM users where id= 11)

为了插入chapter_id,我写道:

UPDATE `users` SET `chapter_id`= (SELECT id FROM chapters WHERE id = 5) WHERE id =11

现在我想在 'chapter_id' 中添加多个 'id' !这样做的查询是什么?

【问题讨论】:

  • 您正在寻找多对多关联。
  • 您能否添加更多示例数据和预期输出。
  • 嗯。 chapter_id=select id from chapters where id=5?那有什么意义呢?为什么不chapter_id=5
  • 您不能在一个值中插入多个chapter_id
  • 不要把自己和我们搞混了,INSERT是用来在表中插入一行的。 UPDATE 用于更新一个(或多个)已经存在的行!

标签: mysql sql database


【解决方案1】:

您必须更改数据库的结构。

现在,您有一个 1 对 N 的关系,其中单个用户只能分配一个章节,但每个章节可以分配给多个用户。

您需要相反的,N 对 1 关系,每个章节都有一个指定的用户。为此,您需要删除当前的 chapter_id 列并在章节表中添加 user_id 列。

如果您想要其他方式,例如 N 对 N 关系(一个用户可以分配多个章节,并且任何章节可以分配多个用户),您需要在中间创建一个新表.

【讨论】:

    【解决方案2】:

    这是不可能的。您需要的是一个连接表,其中每一行都包含对用户和章节的引用。然后,每个用户可以有多个行,每个引用一个章节(因此,每个用户有多个章节。)

    但更重要的是:阅读 SQL。如果您不了解基础知识,您将永远无法使用 SQL 开发任何东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 2011-03-10
      相关资源
      最近更新 更多