用戶表 user(id, ...),好友表 fans(id, user_id, fans_id),兩外鍵均指向 user.id。
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50)
);
CREATE TABLE fans (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
fans_id INT NOT NULL,
CONSTRAINT fk_fans_user FOREIGN KEY (user_id) REFERENCES user(id),
CONSTRAINT fk_fans_fan FOREIGN KEY (fans_id) REFERENCES user(id)
);
fk_fans_user、fk_fans_fan,否則報錯 Error 1005: Can't create table (errno: 121)。ON DELETE CASCADE (刪除用戶級聯刪好友關係) 或 RESTRICT (預設,防止誤刪)。-- 獲取用戶 100 的所有好友資訊
SELECT u.* FROM user u
JOIN fans f ON u.id = f.fans_id
WHERE f.user_id = 100;