【问题标题】:How to insert multiple values in one row in SQL?如何在 SQL 的一行中插入多个值?
【发布时间】:2014-11-20 14:10:53
【问题描述】:

我要创建一个 tbrecord 数据库来保存用户数据,假设我的记录表包含

  1. record_id
  2. member_id
  3. 关系
  4. 日期

之前 (Record01, M001, ... , 20-11-2014)

但该值不是来自查询,我在会话 (php) 中有一个数组。 我的价值观 r001 r002 r003 r004

如果可能的话, 我想在关系字段中插入多个值,使用“,”分隔符。

像这样,

之后

(Record01, M001, (r001,r002,r003,r004), 20-11-2014)

提前谢谢你。 :)

【问题讨论】:

  • 在维基百科上阅读 1NF
  • 是否有固定数量的值?我的意思是它总是只有 4 项?
  • @Ahmad 不,这不是一个固定数字。
  • 这听起来像一个问题,用 php 比用查询可以很简单地解决。一个非常简单的for每个循环就可以构建查询。
  • @hjpotter92 抱歉,这与关系数据库无关。我有一个测验表格,我需要存储所有答案以供最终记录。还是有更好的主意? :) 谢谢

标签: mysql sql delimiter


【解决方案1】:

您需要另一个表来保存您的值,例如Relation(id,item,record_id),此表中的record id 是指向您的原始表Records(record_id, member_id,date) 的外键

现在您可以通过查询将每个值插入到Relation 表中,项目没有限制,所有项目的record_id 等于Records 表中行的record_id关系属于哪个

【讨论】:

    【解决方案2】:

    在单个数据库单元格中存储多个这样的值是不可取的,并且可能会在以后再次伤害您,但这样做很简单。

    <?php
    
    $yourPHParray = array('r001','r002','r003','r004');
    
    $yourQueryString = '("Record01", "M001", "(\'';
    
    foreach($yourPHParray as $singleValue)
    {
    $yourQueryString .= $singleValue."','";
    }
    
    $yourQueryString = substr($yourQueryString, 0,-2); // Remove trailing ,'
    
    $yourQueryString .= ')", "20-11-2014")';
    
    echo $yourQueryString;
    
    ?>
    

    回显将准确返回

    ("Record01", "M001", "('r001','r002','r003','r004')", "20-11-2014")

    希望这会有所帮助!

    【讨论】:

    • 由于 OP 声称关系项的数量不固定,此解决方案将不起作用。因为它假定固定列!
    • 他说数组元素的数量是可变的。不是表结构。他明确指出表列是record_id、member_id、relation、date。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2021-10-13
    • 2012-09-02
    相关资源
    最近更新 更多