需要在同一行中插入多个值,例如我需要插入不同的referrer来为一个site.the表看起来像
|Date |Ref |Uri
--------------------------
28/9 |ref1 ref2 ref3 |url1
在上表中的相同日期和链接获得了3个不同的推荐人。 如何将引荐来源存储在特定日期的同一行中并检索单个引荐来源。 希望了解我的要求
答案 0 :(得分:2)
你可以这样做,但你不应该这样做。它与数据库规范化规则相矛盾,您可以在此处看到:https://en.wikipedia.org/wiki/Database_normalization。
使用另一个表格,其中包含上表中的主键,并将其与每个参考键连接。例如:
现有表格
T-Id |Date |Uri
--------------------------
1 | 28/9 |url1
2 | 28/9 |url2
新表:
Id | Ref-Id | T-Id
--------------------------
1 | 1 | 1
2 | 2 | 1
3 | 3 | 1
4 | 1 | 2
5 | 3 | 2
答案 1 :(得分:1)
首先,你不应该这样做。 你不应该像这样在MySQL中保存数据。任何行都不能包含一个列,其中保存了多个值,例如用逗号,空格或其他任何内容分隔。而不是那样,您必须将这些数据分成多行。这样,您可以轻松检索,更新和删除任何行。
但是如果你想保存那样的数据那么你应该选择JSON数据类型。 从MySQL 5.7.8开始,MySQL支持本机JSON数据类型,可以高效访问JSON(JavaScript Object Notation)文档中的数据。
可以使用JSON数组保存。 JSON数组包含由逗号分隔并包含在[和]字符中的值列表:
["abc", 10, null, true, false]
创建表格ex:
CREATE TABLE `book` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
`tags` json DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
插入数据ex:
INSERT INTO `book` (`title`, `tags`)
VALUES (
'ECMAScript 2015: A SitePoint Anthology',
'["JavaScript", "ES2015", "JSON"]'
);
MySql中有许多本机函数可以处理JSON数据类型。
How to Use JSON Data Fields in MySQL Databases
如果referer是一个实体,具有很多属性,那么你可以按照@ rbr94的建议去做。如果referer没有多个属性,那么在多行中分割数据或使用JSON DataType将执行Job。 最后,这取决于您选择的解决方案。