具有两个条件的MySQL JOIN语句

时间:2015-06-08 14:14:19

标签: mysql

我有两个表都有名为member_id的列。我想选择所有member_ids ......

    来自表1的
  1. WHERE end_date <= NOW()
  2. 表2中的
  3. approved='n'
  4. 我对JOIN非常不熟悉,但我相信这就是我们所需要的。这样的事情似乎并没有起作用......

    SELECT both.member_id, both.course_id 
    FROM vbc_status 
    INNER JOIN course_enrollment ON both.member_id=both.member_id AND 
                                    both.end_date <= NOW() AND 
                                    both.approved='n'
    

    我怎样才能实现这一目标?

3 个答案:

答案 0 :(得分:1)

即使在加入后,您仍然必须按源来引用原始列。我不确定哪个表格有course_id,因此您必须在运行之前修复该表。

SELECT vbc_status.member_id, ?.course_id
FROM vbc_status INNER JOIN course_enrollment
    ON  vbc_status.member_id = course_enrollment.member_id 
        AND vbc_status.end_date <= NOW() AND course_enrollment.approved = 'n'

你可能会发现表别名很方便。

答案 1 :(得分:1)

我想你想要这个:

SELECT *
FROM vbc_status v 
INNER JOIN course_enrollment c ON v.member_id = c.member_id 
WHERE v.end_date <= NOW() AND c.approved='n'

答案 2 :(得分:0)

SELECT t1.member_id, t1.course_id FROM vbc_status t1
    JOIN course_enrollment ce USING(member_id)
    WHERE t1.end_date <= NOW() AND ce.approved='n'

我假设end_date是vbc_status的一列,并且已批准是course_enrollment的一列。

声明说明: 使用vbc_status t1设置表别名,这使得t1成为表vbc_status的别名,而course_enrollment获取别名ce。 然后在选择时,您必须使用表的别名为要查看的字段添加前缀,而where语句也是如此。