mysql子查询及其子查询的合并

表结构为

表名 notice  游戏类型  n_type(斗地主1、斗地主2、斗地主3)   资讯  n_news (新闻、活动、公告)

时间 n_time

需求

查询notice表中游戏类型为“斗地主1”的最新一条新闻、最新一条活动、最新一则公告,只能使用一条sql语句

思路

查询分为三个部分,每个部分都是一个子查询,然后使用UNION ALL将这三个子查询的结果合并在一起

代码

SELECT * FROM (
    SELECT * FROM notice
    WHERE n_type = '斗地主1' AND n_news = '活动'
    ORDER BY n_time DESC
    LIMIT 1
) AS activity
UNION ALL
SELECT * FROM (
    SELECT * FROM notice
    WHERE n_type = '斗地主1' AND n_news = '新闻'
    ORDER BY n_time DESC
    LIMIT 1
) AS news
UNION ALL
SELECT * FROM (
    SELECT * FROM notice
    WHERE n_type = '斗地主1' AND n_news = '公告'
    ORDER BY n_time DESC
    LIMIT 1
) AS notice;

你可能感兴趣的:(mysql,数据库)