php - 我怎样才能结合 2 个复杂的 mysql 查询

标签 php mysql

所以我有两个 MySQL 查询,如果我有知识可以组合,但我没有,所以这就是我转向“SO”的原因,在那种情况下我没有尝试任何东西,因为它超出了我的范围.我想将所有内容合并到一个查询中,如果这不可能,请告诉我。

查询一“这会选择你所有 friend 的帖子,包括你的”:

"SELECT b.*, c.photo, d.name, e.status 
FROM post b 
INNER JOIN profile c 
INNER JOIN user d 
INNER JOIN user_friendship e 
ON b.from_user = c.user_id 
AND b.from_user = d.id 
AND e.friend_id = b.from_user 
WHERE e.status = :status 
AND e.user_id = :id
ORDER BY b.id DESC LIMIT 20"

查询二“这会选择你关注帖子的所有人”:

"SELECT b.*, c.photo, d.name, e.status
FROM post b
INNER JOIN profile c 
INNER JOIN user d 
INNER JOIN user_follower e 
ON b.from_user = c.user_id 
AND b.from_user = d.id 
AND e.to_id = b.from_user 
WHERE e.status = :status 
AND e.who_id = :id
ORDER BY b.id DESC LIMIT 20"

我将这些组合在一起,但只与 php 组合。我想将两者结合在一个 MySQL 查询中。提前致谢

最佳答案

SELECT *
FROM
  (SELECT b.*,
          c.photo,
          d.name,
          e.status
   FROM post b
   INNER JOIN profile c
   INNER JOIN USER d
   INNER JOIN user_friendship e ON b.from_user = c.user_id
   AND b.from_user = d.id
   AND e.friend_id = b.from_user
   WHERE e.status = :status
     AND e.user_id = :id LIMIT 20
   UNION SELECT b.*,
                c.photo,
                d.name,
                e.status
   FROM post b
   INNER JOIN profile c
   INNER JOIN USER d
   INNER JOIN user_follower e ON b.from_user = c.user_id
   AND b.from_user = d.id
   AND e.to_id = b.from_user
   WHERE e.status = :status
     AND e.who_id = :id LIMIT 20 ) MainQuery
ORDER BY id DESC

关于php - 我怎样才能结合 2 个复杂的 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26312428/

相关文章:

php - 网页无法读取 CSS 文件

php - 不知道为什么帖子没有插入我的数据库

MySQL 使用外键创建表给出 errno : 150

php - 如何从连接 5 个不同表的 mysql 数据库检索数据

php - 根据所选月份动态显示 SQL COUNT

php - 选择当天的最后一条记录

javascript - 获取下拉值然后将其插入表格内的文本框,但不会更改第二行

mysql - 使用 BulkCopy 时出错(无法读取结果集)

c# - 在配置数据源向导中配置 MySQL 数据源时出现连接错误

php - DoDirectPayment 方法缺少必需参数