Mysql
JOIN 讀取第一個表並在第二個表中獲取可能的關係
將主表視為
CREATE TABLE groups ( group_id int(11) NOT NULL AUTO_INCREMENT, group_title varchar(255), PRIMARY KEY(group_id) ) ENGINE=InnoDB
和第二個關係表
CREATE TABLE group_members ( relation_id int(11) NOT NULL AUTO_INCREMENT, group_id int(11), user_id int(11), FOREIGN KEY(group_id) REFERENCES groups(group_id) ON DELETE CASCADE, FOREIGN KEY(user_id) REFERENCES users(user_id) ON DELETE CASCADE, PRIMARY KEY(relationsh_id) ) ENGINE=InnoDB
如何
groups
使用附加列獲取所有列表的完整列表,該列指示給定使用者是否是每個組的成員。這意味著我們將有一個WHERE clause
指示相應的user_id
,並且附加列將顯示0
或1
,這取決於它user_id
是否與每個組有聯繫。
根據您更新的問題:
SELECT group_title, IF(user_id IS NULL, 0, 1) FROM groups LEFT JOIN (SELECT user_id, group_id FROM group_members WHERE user_id=1)gMembers USING(group_id)