我有一个网页,其“页面/文章”存储在 MySQL 数据库中。它还具有为不同页面显示不同侧面菜单的功能。所有这些(菜单、菜单项)都存储在数据库中。
这是我获取当前页面所有菜单项的 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?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7572584/