我想將數組存儲在記錄中。MySQL中的數組
表1:
ID, Name, Friends (friends should be an array) 1, Bill, 2&3 2, Charles, 1&3 3, Clare, 1
我希望能夠做這樣的搜索:
SELECT * FROM Table1 WHERE Friends='3'
發現大家誰也克萊爾列爲朋友
我想將數組存儲在記錄中。MySQL中的數組
表1:
ID, Name, Friends (friends should be an array) 1, Bill, 2&3 2, Charles, 1&3 3, Clare, 1
我希望能夠做這樣的搜索:
SELECT * FROM Table1 WHERE Friends='3'
發現大家誰也克萊爾列爲朋友
除非你有一個很好的理由這樣做,你應該讓你的數據歸一化,並存儲在不同的表之間的關係。我想也許你正在尋找的是這樣的:
CREATE TABLE people (
id int not null auto_increment,
name varchar(250) not null,
primary key(id)
);
CREATE TABLE friendships (
id int not null auto_increment,
user_id int not null,
friend_id int not null,
primary key(id)
);
INSERT INTO people (name) VALUES ('Bill'),('Charles'),('Clare');
INSERT INTO friendships (user_id, friend_id) VALUES (1,3), (2,3);
SELECT *
FROM people p
INNER JOIN friendships f
ON f.user_id = p.id
WHERE f.friend_id = 3;
+----+---------+----+---------+-----------+ | id | name | id | user_id | friend_id | +----+---------+----+---------+-----------+ | 1 | Bill | 1 | 1 | 3 | | 2 | Charles | 2 | 2 | 3 | +----+---------+----+---------+-----------+ 2 rows in set (0.00 sec)
你可能需要一個逗號分隔值,但不推薦。爲什麼不使用另一個表來顯示關係?
Table2
----------------------
PARENT_ID | FRIEND_ID
----------------------
1 | 2
1 | 3
2 | 1
2 | 3
----------------------
這看起來像一個關係表,而不是完美的地方: 表1:
ID, Name
1, Bill
2, Charles
3, Clare
表2(關係表)
ID, FriendID
1, 2
1, 3
2, 1
2, 3
3, 1
第二張表跟蹤通過連接來自Table1的ID的朋友關係。
正確和最好的方法。這是關係數據庫的語法。更好地使用此解決方案 - 它通過時間和經驗進行測試。 而且,順便說一句,我想知道,適度(當然,你需要它)的序列化數組看起來像? – Jet 2009-05-22 09:10:27