如果故事表中的每个 mainMenu
、subMenu
和 subMenu2
列都有一个值。
如果其中任何一个为 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/