2016-09-29 82 views
0

需要在同一行中插入多個值,比如我需要插入不同的引薦來到了site.the表看起來像同一行的MySQL表中插入多個值

|Date |Ref   |Uri 
-------------------------- 
28/9 |ref1 ref2 ref3 |url1 

同一日期上面的表格和鏈接得到了3個不同的引薦。 如何將推薦人存儲在特定日期的同一行並檢索單個推薦人。 希望瞭解我的要求

+0

請使用逗號分隔變量。像',ref1,ref2,ref3,'。稍後,您可以使用逗號(在您的程序中)將值分解,然後將其提取出來。如果你想查找'ref2'的所有記錄,你可以使用'like'%,ref%'' – Rajesh

+1

你不應該像這樣在MySQL中保存數據。 任何行都不得有保存多個值的列,如用逗號,空格或其他分隔符分隔的列。除此之外,您必須將這些數據分成多行。由此,您可以輕鬆檢索,更新和刪除任何行。 – t9toqwerty

+0

我們能解決你的問題嗎? – rbr94

回答

2

你可以做到這一點,但你不應該這樣做。它與數據庫規範化規則相矛盾,您可以在這裏看到: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 
1

第一。 你不應該像這樣在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

Mysql JSON Data Type

在當引用者是一個實體,有許多屬性,然後通過@ rbr94的建議,你可以做的情況。如果referer的屬性不超過一個,那麼在多行中分割數據或使用JSON DataType將完成Job。最後它取決於您選擇的解決方案。

+0

爲什麼你不爲你的「標籤」使用單獨的表格。這將是非常困難的,例如,找到所有包含「Javascript」標籤的書籍,如果你這樣做的話 – rbr94

+0

是的,這也是一個好主意。但他可以使用JSON數據搜索數據。 – t9toqwerty

+1

直到現在我還不知道這種方法。但是這對我來說也是合乎邏輯的。 – rbr94

相關問題