Mysql

JOIN 讀取第一個表並在第二個表中獲取可能的關係

  • May 22, 2013

將主表視為

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,並且附加列將顯示01,這取決於它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)

sqlfiddle

引用自:https://dba.stackexchange.com/questions/42844