+-

我有一个网页,其“页面/文章”存储在 MySQL数据库中.它还具有显示不同页面的不同侧菜单的功能.所有这些(菜单,菜单项)都存储在DB中.
这是获取当前页面所有菜单项的SQL:
SELECT *
FROM menu_items
JOIN pages
ON menu_items.menu_id=pages.right_menu_id
WHERE pages.link = "some_link"
而且有效.
我想要的是,当此查询返回一个空集时,执行另一个查询并获取其结果.可能吗 ??如果上述查询为空,我想获取该查询的结果:
SELECT *
FROM menu_items
WHERE menu_id=2;
有可能吗,还是应该在PHP中完成呢?
最佳答案
您可以使用EXIST函数测试当前页面是否具有任何链接:
IF EXISTS(SELECT menu_id FROM menu_items JOIN pages ON menu_items.menu_id = pages.right_menu_id WHERE pages.link = "some_link") THEN
SELECT *
FROM menu_items
JOIN pages
ON menu_items.menu_id=pages.right_menu_id
WHERE pages.link = "some_link"
ELSE
SELECT *
FROM menu_items
JOIN pages
ON menu_items.menu_id=pages.right_menu_id
WHERE menu_id = 2
END IF
您也可以尝试如下操作:
DECLARE @LinkCount INT
SELECT @LinkCount = COUNT(*) FROM menu_items JOIN pages ON menu_items.menu_id = pages.right_menu_id WHERE pages.link = "some_link"
SELECT *
FROM menu_items
JOIN pages
ON menu_items.menu_id=pages.right_menu_id
WHERE (@LinkCount > 0 AND pages.link = "some_link") OR (@LinkCount = 0 AND menu_id = 2)
可能会有更优雅的方法来执行此操作,但希望对您有所帮助.
点击查看更多相关文章
转载注明原文:mysql-条件SQL SELECT-返回集为空时,执行另一个SELECT? - 乐贴网