Mysql 使用UNION、JOIN和ORDER by合并两个相同的表

Mysql 使用UNION、JOIN和ORDER by合并两个相同的表,mysql,sql,Mysql,Sql,我需要连接两个相同的表以显示按id排序的相同列表。(posts和posts2) 以前只处理一个表,但我们一直在使用第二个表(posts2)来存储来自某个id的新数据 这是我在处理1个表(posts)时使用的查询,效果很好 select posts.id_usu,posts.id_cat,posts.titulo,posts.html,posts.slug,posts.fecha,hits.id,hits.hits,usuarios.id,usuarios.usuario,posts.id Fr

我需要连接两个相同的表以显示按id排序的相同列表。(postsposts2

以前只处理一个表,但我们一直在使用第二个表(posts2)来存储来自某个id的新数据

这是我在处理1个表(posts)时使用的查询,效果很好

select posts.id_usu,posts.id_cat,posts.titulo,posts.html,posts.slug,posts.fecha,hits.id,hits.hits,usuarios.id,usuarios.usuario,posts.id 
From posts 
Join hits On posts.id = hits.id
Join usuarios On posts.id_usu = usuarios.id 
where posts.id_cat='".$catid."' order by posts.id desc
现在我尝试将此查询应用于Union 2表,但我不知道在什么时候实例化联接。我尝试了几种方法,但都出现了错误。下面的查询合并了这两个表并按id排序,但需要添加联接

select * from (
    SELECT posts.id,posts.id_usu,posts.id_cat,posts.titulo,posts.html,posts.slug,posts.fecha 
        FROM posts where id_cat='6' ORDER BY id
    )X
UNION ALL
    SELECT posts2.id,posts2.id_usu,posts2.id_cat,posts2.titulo,posts2.html,posts2.slug,posts2.fecha         FROM posts2 where id_cat='4' ORDER BY id DESC limit 20
我需要在上面的查询中添加这个

Join hits On posts.id = hits.id
Join usuarios On posts.id_usu = usuarios.id 

提前感谢各位。

如果您想要与第一个查询相同的查询,但这次使用相同表的并集,即post2,那么您可以这样做

select
p.id_usu,p.id_cat,p.titulo,p.html,p.slug,p.fecha 
,hits.id,hits.hits,usuarios.id,usuarios.usuario
from (
(select 
id_usu,id_cat,titulo,html,slug,fecha ,id
From posts
where id_cat='".$catid."' order by id desc limit 20)

UNION ALL

(select 
id_usu,id_cat,titulo,html,slug,fecha ,id
From posts2
where id_cat='".$catid."' order by id desc limit 20)
) p
Join hits On p.id = hits.id
Join usuarios On p.id_usu = usuarios.id 
order by p.id desc limit 20

就这样!工作正常,但查询需要1.0959 seg(慢),可以通过为每个select设置单独的限制来改进?