如何在mysql中为列添加多个值

时间:2018-04-11 10:08:57

标签: php mysql mysqli

这是我对表

创建的查询
CREATE TABLE `result` (
  `id` int(11) NOT NULL,
  `l_id` varchar(25) NOT NULL,
  `lname` varchar(200) NOT NULL,
  `first_prize` varchar(9) DEFAULT NULL,
  `consolation_prize` varchar(9) DEFAULT NULL,
  `second_prize` varchar(9) DEFAULT NULL,
  `third_prize` varchar(9) DEFAULT NULL,
  `fourth_prize` int(11) DEFAULT NULL,
  `fifth_prize` int(11) DEFAULT NULL,
  `sixth_prize` int(11) DEFAULT NULL,
  `seventh_prize` int(11) DEFAULT NULL,
  `eigth_prize` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

这是插入值的查询

INSERT INTO `result` (`id`, `l_id`, `lname`, `first_prize`, `consolation_prize`, `second_prize`, `third_prize`, `fourth_prize`, `fifth_prize`, `sixth_prize`, `seventh_prize`, `eigth_prize`) VALUES
(1, '1', 'Win-Win', 'WO-878475', 'WO-878474', 'WO-878477', 'WO-878455', 8474, 8477, 8412, 8473, 8689),
(2, '2', 'KARUNNYA', NULL, NULL, NULL, NULL, 6, NULL, NULL, NULL, NULL),
(3, '3', 'SOUBHAGYA', 'WE-878656', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(4, '4', 'SREE SAKTHI', 'NB-750180', 'NE-750180', 'KO-594630', 'KF-678534', 6786, 4356, 2456, 4566, 7657);

问题是,我无法向任何列插入多个值,例如first_prize,second_prize,third_prize等... 怎么做,请帮助我,我不知道,我是所有这些新手。

3 个答案:

答案 0 :(得分:0)

INSERT INTO结果(id,l_id,lname,first_prize,consolation_prize,second_prize,third_prize,fourth_prize,fifth_prize,third_prize,seventh_prize,eigth_prize) VALUES(1,'1','Win-Win','WO-878475,WO-878474,WO-878477',NULL,NULL,'WO-878455',8474,8477,8412,8473,8689); < / p>

增加列的长度。

答案 1 :(得分:0)

我建议你使用“2”,这是我答案中的最后一个选项。

  

我需要在first_prize列中输入两个不同的值(即WO-878475,WE-878475)

要直接回答您的问题,您可以在值之间设置分隔符(例如|或逗号),然后在根据分隔符选择分割的字段数据时。这是一个糟糕的设计方法的99%,它确实是。

我真诚地建议您考虑进行轻微的重新设计并执行以下任一操作:
1)
添加更多字段,例如first_prize_1first_prize_2。这可能不是最好的方法,但我不知道您的所有设置 - 如果您将来需要另一个设置,这将导致维护问题,例如first_prize_3,但比单个字段中的多个值好很多

<强> 2)
这可能是更好的方法 - 创建一个新表prizes并拥有字段:

id  
prize_id  
prize_level (this will be 1, 2, 3 etc for first prize and so on)  
competition_id

然后每场比赛每个奖项只有一行,并为competition_id选择所有内容,并且这些字段允许您说明它是什么奖品等。

因此id字段是唯一行ID的自动增量。然后行看起来像:
id = 1; prize_id = WO-878475; prize_level = 1; competition_id = 1;
id = 2; prize_id = WE-878475; prize_level = 1; competition_id = 1;

然后你选择competition_id = 1的地方,你可以获得所有可能的比赛奖品,包括prize_id和prize_levels(第1名,第2名等)。这样,按照上面的例子,你可以获得一个以上的一等奖,并且随着行数无穷无尽,你可以根据自己的竞争要求获得尽可能多的奖品,因此不受表格中的字段限制(如字段first_prizesecond_prize等)。

答案 2 :(得分:0)

MySQL是一个关系数据库。我建议你用两张桌子。 第一个event将包含事件数据(idname等),第二个结构可以如下结构:

  `event_id` varchar(25) NOT NULL,
  `winner` varchar(9) NOT NULL,
  `prize_type` int(11) NOT NULL,

然后你可以定义你的密钥,例如:

0 = consolation prize
1 = first prize
2 = second prize
etc..