MySQL组合来自2个表的数据

时间:2017-10-26 08:49:27

标签: mysql sql join

TABLE surveys:

id   survey_title       date           active
1    Example Survey     1508842162     1
2    Example Survey2    1508842162     1


TABLE survey_user_relation:

id    user_id       survey_id(foregin_key)       active
1     1             1                            1
2     1             2                            0
3     2             1                            1

我上面有两张桌子。列活动表示调查表中的所有用户是否关闭了调查,并且仅调查了survey_user_relation表中的一个用户。 user_id和survey_id一起设置为UNIQUE键,这样一个用户只能与同一个调查相关一次。 我正在尝试列出所有调查,如果可能,我想知道用户是否在一个查询中与该调查相关。

我试过

SELECT * 
  FROM surveys s
  LEFT 
  JOIN survey_user_relation u
    ON u.survey_id = s.id 
 WHERE u.user_id = 2

但它只提供一项调查,我需要查看所有调查,并知道用户是否相关。

提前致谢

编辑:

我需要看到像

这样的东西
id   survey_title       date           active     user_id
1    Example Survey     1508842162     1          2
2    Example Survey2    1508842162     1          NULL

2 个答案:

答案 0 :(得分:1)

这应该可以解决问题。

app.staticTexts.

他只获取真正拥有user_id = 2的条目。在左连接中,他检查是否有一个,否则它为列返回null。 顺便说一下,你不需要第二张桌子上的行ID。只需将survey_id和user_id设置为primary即可。

答案 1 :(得分:0)

我认为您对此结果感兴趣:

SEELCT distinct s.survey_title, u.user_id
FROM surveys AS S LEFT JOIN survey_user_relation AS U 
ON U.survey_id = S.id