MySQL - 如果 x 不为空,则连接表

标签 mysql sql join

如果故事表中的每个 mainMenusubMenusubMenu2 列都有一个值。

如果其中任何一个为 null,则不会返回任何结果。我不想使用左连接,因为当连接的菜单处于非事件状态时,这会返回结果。

SELECT * 
FROM stories s
JOIN menu m
    ON s.mainMenu = m.id 
    AND m.menu_active = 1 
JOIN submenu m2
    ON s.subMenu = m2.id
    AND m2.submenu_active = 1
JOIN submenu_L2 m3
    ON s.subMenu2 = m3.id
    AND m3.submenu_L2_active = 1
WHERE s.story_id = 198 
AND s.story_active = 1

有没有办法仅在故事表中的相关列不为空时才加入表?

所以类似:

SELECT * 
FROM stories s
if s.mainMenu IS NOT NULL then
JOIN menu m
    ON s.mainMenu = m.id 
    AND m.menu_active = 1 
end if
JOIN sub me...

最佳答案

我同意穆库斯的观点。 听起来您想要 LEFT JOIN。

左连接将返回表“stories”中的所有内容以及它们连接的表“menu”中的数据。

SELECT * 
FROM stories s
LEFT JOIN menu m
    ON s.mainMenu = m.id 
    AND m.menu_active = 1
LEFT JOIN sub me...

关于MySQL - 如果 x 不为空,则连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23256884/

相关文章:

mysql - 尝试将 4 个表与一个 mysql 查询关联起来

sql - 如何在 SQL Server 中随时间插入纬度/经度?

mysql - 子查询或连接以匹配值范围内 2 个字段上的 2 个表

mysql - 需要理解这个查询逻辑

MySQL 空间简化几何

mysql - 我无法在 mariadb 上导入数据

php - Order By 不适用于连接和分组的 MySQL 表

sql - 值唯一时 SQL Server 中的标识字段和主键

java - 在 Oracle 中设置时间戳

sql - 需要 SQL 连接方面的帮助 : Conditional Matching?