簡體   English   中英

如何合並2個復雜的mysql查詢

[英]How can I combine 2 complex mysql queries

因此,我有兩個MySQL查詢,如果我有結合的知識,我會但不知道,這就是為什么我轉向“ SO”的原因,在那種情況下,我沒有嘗試任何事情,因為它超出了我的范圍。 我想將所有查詢合並為一個查詢,如果無法實現,請告訴我。

查詢一個“這將選擇您所有的朋友帖子,包括您的帖子”:

"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
SELECT b.*, c.photo, d.name, e.status, "P" 
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
UNION
SELECT b.*, c.photo, d.name, e.status, "F"
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

通過額外的列,您可以看到行的來源(P =發布,F =跟隨)

請記住,聯合將刪除重復的行。 如果要查看所有行,請使用UNION ALL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM