MySQL通过两个表中的一个查询获取关系用户

时间:2016-10-19 12:50:37

标签: php mysql

我试图获取"朋友列表#34;从我的表。我有两个表,一个用于存储用户列表,另一个用于存储与该用户的关系。我添加了sqlfiddle示例模式。我需要抓住所有的朋友"对于指定的用户ID:

CREATE TABLE tbl_users
    (`id` int, `name` varchar(7), `description` varchar(55));

INSERT INTO tbl_users
    (`id`, `name`, `description`)
VALUES
    (1, 'John', '111'),
    (2, 'Derrik', '222'),
    (3, 'Nikolas', '333'),
    (4, 'Hellen', '444'),
    (5, 'Jack', '555');

CREATE TABLE tbl_relations
    (`id` int, `user_id` int, `following_id` int);

INSERT INTO tbl_relations
    (`id`, `user_id`, `following_id`)
VALUES
    (1, '1', '2'),
    (2, '1', '3'),
    (3, '1', '4'),
    (4, '2', '1'),
    (5, '4', '1');

是的,我可以做两个查询然后进行比较,但我认为这应该适用于一个。

预期结果:如果指定的用户ID = 1,则结果应为2,4用户

THX。

4 个答案:

答案 0 :(得分:0)

如果表

  1. 用户
  2. relations
  3. 这两个表必须具有相同值的列。如果列是user_id那么

    SELECT * from users,relations WHERE users.user_id = relations.user_id;

    我希望这个答案可以帮助你:)

答案 1 :(得分:0)

try this:

SELECT tbl_users.* 

FROM tbl_users

INNER JOIN tbl_relations ON tbl_relations.user_id = tbl_users.id

More about join

答案 2 :(得分:0)

"预期结果:如果指定的用户ID = 1,则结果应为2,4用户"

SELECT x.following_id reciprocations
  FROM tbl_relations x 
  JOIN tbl_relations y 
    ON y.user_id = x.following_id 
   AND y.following_id = x.user_id 
 WHERE x.user_id = 1;

答案 3 :(得分:-1)

对于用户ID 1

,这应返回2,3
SELECT id FROM tbl_relations 
WHERE user_id = 1 AND id != user_id;

要获取朋友而不是他们的ID,请使用

SELECT * from tbl_users WHERE id IN (SELECT id FROM tbl_relations 
WHERE user_id = 1 AND id != user_id);