我需要连接两个相同的表以显示按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
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表,但是我不知道在什么时候实例化连接。我尝试了几种方法,但是发送了MYSQL错误。下面的查询合并了这两个表并按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

关于mysql - 使用UNION,JOIN和ORDER by合并2个相同的表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23500310/

10-15 20:34