需要在同一行中插入多個值,比如我需要插入不同的引薦來到了site.the表看起來像同一行的MySQL表中插入多個值
|Date |Ref |Uri
--------------------------
28/9 |ref1 ref2 ref3 |url1
在
同一日期上面的表格和鏈接得到了3個不同的引薦。 如何將推薦人存儲在特定日期的同一行並檢索單個推薦人。 希望瞭解我的要求
需要在同一行中插入多個值,比如我需要插入不同的引薦來到了site.the表看起來像同一行的MySQL表中插入多個值
|Date |Ref |Uri
--------------------------
28/9 |ref1 ref2 ref3 |url1
在
同一日期上面的表格和鏈接得到了3個不同的引薦。 如何將推薦人存儲在特定日期的同一行並檢索單個推薦人。 希望瞭解我的要求
你可以做到這一點,但你不應該這樣做。它與數據庫規範化規則相矛盾,您可以在這裏看到:https://en.wikipedia.org/wiki/Database_normalization。
使用進一步的表,其中包含上表中的主鍵,並將其與每個ref鍵連接。例如:
現有表:
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
第一。 你不應該像這樣在MySQL中保存數據。任何行都不得有保存多個值的列,例如用逗號,空格或其他任何值分隔。除此之外,您必須將這些數據分成多行。由此,您可以輕鬆檢索,更新和刪除任何行。
但是,如果你想保存這樣的數據,那麼你應該去的JSON數據類型。 從MySQL 5.7.8開始,MySQL支持一種本機JSON數據類型,可以在JSON(JavaScript Object Notation)文檔中高效地訪問數據。
它可以使用JSON數組保存。 甲JSON數組包含內由逗號分隔的和封閉的值的列表[和]字符:
["abc", 10, null, true, false]
創建表例如:
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;
插入數據例如:
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
在當引用者是一個實體,有許多屬性,然後通過@ rbr94的建議,你可以做的情況。如果referer的屬性不超過一個,那麼在多行中分割數據或使用JSON DataType將完成Job。最後它取決於您選擇的解決方案。
爲什麼你不爲你的「標籤」使用單獨的表格。這將是非常困難的,例如,找到所有包含「Javascript」標籤的書籍,如果你這樣做的話 – rbr94
是的,這也是一個好主意。但他可以使用JSON數據搜索數據。 – t9toqwerty
直到現在我還不知道這種方法。但是這對我來說也是合乎邏輯的。 – rbr94
請使用逗號分隔變量。像',ref1,ref2,ref3,'。稍後,您可以使用逗號(在您的程序中)將值分解,然後將其提取出來。如果你想查找'ref2'的所有記錄,你可以使用'like'%,ref%'' – Rajesh
你不應該像這樣在MySQL中保存數據。 任何行都不得有保存多個值的列,如用逗號,空格或其他分隔符分隔的列。除此之外,您必須將這些數據分成多行。由此,您可以輕鬆檢索,更新和刪除任何行。 – t9toqwerty
我們能解決你的問題嗎? – rbr94