Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql WHERE子句如果匹配_Mysql - Fatal编程技术网

Mysql WHERE子句如果匹配

Mysql WHERE子句如果匹配,mysql,Mysql,使WHERE子句的一部分依赖于联接的结果的最简单方法是什么?我意识到这是一个非常模糊和令人困惑的问题,因此请允许我简单地向您展示我试图实现的目标: SELECT m.member_id, m.first_name, m.last_name FROM cal_form_answers a INNER JOIN cal_form_elements e USING(element_id) INNER JOIN cal_forms f USING(form_id) LEFT JOIN m

使
WHERE
子句的一部分依赖于
联接的结果的最简单方法是什么?我意识到这是一个非常模糊和令人困惑的问题,因此请允许我简单地向您展示我试图实现的目标:

SELECT m.member_id, m.first_name, m.last_name
FROM cal_form_answers a
INNER JOIN cal_form_elements e
    USING(element_id)
INNER JOIN cal_forms f
    USING(form_id)
LEFT JOIN members m
    USING(member_id)
WHERE f.org_id = ?
    AND m.org_id = ?
    AND e.form_id = ?
GROUP BY a.member_id
ORDER BY a.member_id
首先,请注意问号不是无效语法——我使用的是Codeigniter,它将问号用作绑定参数

第10行(
和m.org_id=?
)取决于
左连接是否实际找到了某些内容。如果
成员
表中没有匹配项,那么第10行就不需要了。事实上,这成了一个问题。我想将结果限制在第10行,除非members表中没有匹配项。在这种情况下,我只想忽略
WHERE
子句的这一部分

我相信这可以通过使用子查询来实现,尽管我不确定如何计算语法。还有别的办法吗?如果是,还可以通过其他方式实现这一结果?如果没有其他方法,是否有人可以针对这种情况演示子查询的实现,并解释它是如何工作的


谢谢大家!

如果左连接与记录不匹配,则这些左连接字段为空。为什么不检查该字段是否为空,如果不是空,则检查它。)


那么为什么不在连接条件部分指定这些条件呢?啊,我真傻。尽管经过多年的网站开发,我仍然发现自己无法用SQL清晰地思考问题。我知道这很简单!谢谢。:)
SELECT m.member_id, m.first_name, m.last_name
FROM cal_form_answers a
INNER JOIN cal_form_elements e
    USING(element_id)
INNER JOIN cal_forms f
    USING(form_id)
LEFT JOIN members m
    USING(member_id)
WHERE f.org_id = ?
    AND (m.org_id = ? OR m.org_id IS NULL)
    AND e.form_id = ?
GROUP BY a.member_id
ORDER BY a.member_id