mysql 查询结果并集 悟饭救我

qq_34354426 2017-08-21 10:06:10


想要上面那个查询只返回三条数据,下面那个按时间倒叙排列并且有分页limit 0,10 最后合并起来
...全文
385 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2017-08-21
  • 打赏
  • 举报
回复
引用 9 楼 sinat_28984567 的回复:
select t1.* from (
SELECT  cms_content_comments.*,t.likecount
FROM    cms_content_comments
        LEFT JOIN ( SELECT  parent_id ,
                            COUNT(1) AS likecount
                    FROM    cms_content_comments
                    WHERE   news_id = 1
                            AND like_it = 1
                    GROUP BY parent_id
                  ) t ON cms_content_comments.id = t.parent_id
WHERE   comment <> ''
        AND comment IS NOT NULL
ORDER BY t.likecount DESC limit 3) as  t1
     
union 
select * from (
SELECT  cms_content_comments.*,t.likecount
FROM    cms_content_comments
        LEFT JOIN ( SELECT  parent_id ,
                            COUNT(1) AS likecount
                    FROM    cms_content_comments
                    WHERE   news_id = 1
                            AND like_it = 1
                    GROUP BY parent_id
                  ) t ON cms_content_comments.id = t.parent_id
WHERE   comment <> ''
        AND comment IS NOT NULL
ORDER BY comment_time limit 0,10)t2

        
版主大大好厉害啊,~~~~~崇拜~~~~~~~~
二月十六 2017-08-21
  • 打赏
  • 举报
回复
select t1.* from (
SELECT cms_content_comments.*,t.likecount
FROM cms_content_comments
LEFT JOIN ( SELECT parent_id ,
COUNT(1) AS likecount
FROM cms_content_comments
WHERE news_id = 1
AND like_it = 1
GROUP BY parent_id
) t ON cms_content_comments.id = t.parent_id
WHERE comment <> ''
AND comment IS NOT NULL
ORDER BY t.likecount DESC limit 3) as t1

union
select * from (
SELECT cms_content_comments.*,t.likecount
FROM cms_content_comments
LEFT JOIN ( SELECT parent_id ,
COUNT(1) AS likecount
FROM cms_content_comments
WHERE news_id = 1
AND like_it = 1
GROUP BY parent_id
) t ON cms_content_comments.id = t.parent_id
WHERE comment <> ''
AND comment IS NOT NULL
ORDER BY comment_time limit 0,10)t2

「已注销」 2017-08-21
  • 打赏
  • 举报
回复
引用 5 楼 sinat_28984567 的回复:
奥MySQL 没有top …,把上边那个top 3去掉在order by 后边加limit 3试试
目前就想到了一个并集数据的方法,悟空可有啥好方法伐
「已注销」 2017-08-21
  • 打赏
  • 举报
回复
其实就是基于你昨天的查询,想实现一个,按点赞排序前三条的结果,三条以后就按照时间排序。
「已注销」 2017-08-21
  • 打赏
  • 举报
回复
引用 5 楼 sinat_28984567 的回复:
奥MySQL 没有top …,把上边那个top 3去掉在order by 后边加limit 3试试
小心琪琪
二月十六 2017-08-21
  • 打赏
  • 举报
回复
奥MySQL 没有top …,把上边那个top 3去掉在order by 后边加limit 3试试
「已注销」 2017-08-21
  • 打赏
  • 举报
回复
引用 3 楼 sinat_28984567 的回复:
mysql不太熟悉……你试试这样行吗?
SELECT * FROM (
SELECT TOP 3 *
FROM cms_content_comments
LEFT JOIN ( SELECT parent_id ,
COUNT(1) AS likecount
FROM cms_content_comments
WHERE news_id = 1
AND like_it = 1
GROUP BY parent_id
) t ON cms_content_comments.id = t.parent_id
WHERE comment <> ''
AND comment IS NOT NULL
ORDER BY t.likecount DESC )t1

UNION all
SELECT * FROM (
SELECT *
FROM cms_content_comments
LEFT JOIN ( SELECT parent_id ,
COUNT(1) AS likecount
FROM cms_content_comments
WHERE news_id = 1
AND like_it = 1
GROUP BY parent_id
) t ON cms_content_comments.id = t.parent_id
WHERE comment <> ''
AND comment IS NOT NULL
ORDER BY comment_time desc 
limit 0,10)t2


另外我这个是悟空
二月十六 2017-08-21
  • 打赏
  • 举报
回复
mysql不太熟悉……你试试这样行吗?
SELECT * FROM (
SELECT TOP 3 *
FROM cms_content_comments
LEFT JOIN ( SELECT parent_id ,
COUNT(1) AS likecount
FROM cms_content_comments
WHERE news_id = 1
AND like_it = 1
GROUP BY parent_id
) t ON cms_content_comments.id = t.parent_id
WHERE comment <> ''
AND comment IS NOT NULL
ORDER BY t.likecount DESC )t1

UNION all
SELECT * FROM (
SELECT *
FROM cms_content_comments
LEFT JOIN ( SELECT parent_id ,
COUNT(1) AS likecount
FROM cms_content_comments
WHERE news_id = 1
AND like_it = 1
GROUP BY parent_id
) t ON cms_content_comments.id = t.parent_id
WHERE comment <> ''
AND comment IS NOT NULL
ORDER BY comment_time desc 
limit 0,10)t2


另外我这个是悟空
「已注销」 2017-08-21
  • 打赏
  • 举报
回复
SELECT * FROM cms_content_comments LEFT JOIN ( SELECT parent_id , COUNT(1) AS likecount FROM cms_content_comments WHERE news_id = 1 AND like_it = 1 GROUP BY parent_id ) t ON cms_content_comments.id = t.parent_id WHERE comment <> '' AND comment IS NOT NULL ORDER BY t.likecount DESC , UNION all SELECT * FROM cms_content_comments LEFT JOIN ( SELECT parent_id , COUNT(1) AS likecount FROM cms_content_comments WHERE news_id = 1 AND like_it = 1 GROUP BY parent_id ) t ON cms_content_comments.id = t.parent_id WHERE comment <> '' AND comment IS NOT NULL ORDER BY comment_time desc 
「已注销」 2017-08-21
  • 打赏
  • 举报
回复
悟饭救我

56,864

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧