mysql - 将两个查询合并为一个

标签 mysql sql

如何将这两个查询合并为一个已经加入的查询?

SELECT *
FROM   post 
       LEFT JOIN post_plus 
              ON ( post.id = post_plus.news_id ) 
       where approve = 1 
ORDER  BY fixed DESC, 
          date DESC 
LIMIT  0, 7; 

SELECT c1.postid
FROM   post_category c1
       JOIN post_category c2
         ON c1.postid = c2.postid
WHERE  c1.categoryid IN ( 130, 3, 4, 5 )
       AND c2.categoryid = 73 

最佳答案

如果帖子有链接post_category的外键:

SELECT *
FROM post p
JOIN post_category pc
ON p.fk_post_category = pc.id
JOIN post_category pc2
ON pc.postid = pc2.postid
LEFT JOIN post_plus pp
          ON ( p.id = pp.news_id ) 
where approve = 1 
and pc.categoryid IN ( 130, 3, 4, 5 )
   AND pc2.categoryid = 73  
ORDER  BY fixed DESC, 
      date DESC 
LIMIT  0, 7; 

显然,您的结果仅限于第一个查询。如果帖子和帖子类别之间不存在关系,请发布您希望如何放置这些表格

关于mysql - 将两个查询合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18687858/

相关文章:

sql - Postgres 类似于 SQL Server 中的 CROSS APPLY

php - 限制textarea中的字符 - 转义引号和双引号在MySQL中占用2个字符

python - 为 mysql 日期时间字段创建并插入 strftime 对象

php - 如何合并多个 mySQL 查询?

sql - 计算 SQL 或 Pandas 中 GROUP BY 后的类别数

带有特殊字符的 Sql 查询 - 如何处理?

sql - PostgreSQL:给定特定时间间隔的一周中每一天的记录计数

mysql - 多个变量、表和参数合并到一个查询中

php - 如何从数据库中删除除大列表之外的所有文件?

sql - Oracle中是否需要 'as'关键字来定义别名?