+-
mysql-条件SQL SELECT-返回集为空时,执行另一个SELECT?
我有一个网页,其“页面/文章”存储在 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? - 乐贴网