gpt4 book ai didi

MySQL - 如果 LEFT OUTER JOIN 中不存在行,则排除行

转载 作者:行者123 更新时间:2023-11-29 08:53:11 26 4
gpt4 key购买 nike

我有一个 SQL 查询,在一定程度上工作正常。

LEFT OUTER JOIN 工作正常,但如果 mdl_modules 或 mdl_resource 中没有记录,则会出现 NULL。

如何从 mdl_course_modules 中排除任何 LEFT OUTER JOIN 中都没有记录的记录?

我想我会使用 ISNULL() 但不确定与我的查询合并的正确语法。

这是我的查询:

SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", "cm.id AS theid, m.name AS mname, r.name AS resourcename, r.summary AS resourcesummary,
FROM_UNIXTIME(cm.added, '%D %M %Y') AS dateadded")."
FROM mdl_course_modules cm
LEFT OUTER JOIN mdl_modules m on cm.module = m.id
LEFT OUTER JOIN mdl_resource r on cm.instance = r.id
WHERE m.name = 'resource' AND cm.visible = 1
$scourse
$sWhere
$sOrder
$sLimit

最佳答案

通常,这可以通过切换到INNER JOIN来完成,但是 INNER JOIN在 MySql 中相当于 CROSS JOIN,因此实际上没有帮助。

要解决此问题,请使用 ISNULL 添加所需的 WHERE 条件:

SELECT ...
FROM_UNIXTIME(cm.added, '%D %M %Y') AS dateadded")."
FROM mdl_course_modules cm
LEFT OUTER JOIN mdl_modules m on cm.module = m.id
LEFT OUTER JOIN mdl_resource r on cm.instance = r.id
WHERE m.name = 'resource' AND cm.visible = 1
&& (!ISNULL(m.name) || !ISNULL(r.name))

关于MySQL - 如果 LEFT OUTER JOIN 中不存在行,则排除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10597546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com