簡體   English   中英

如何在一個查詢中合並不同的多個選擇?

[英]How to union different multiple selects in one query?

是否可以將所有表合並為一個或兩個查詢?

我嘗試使用聯合,但我需要訪問查詢中的每一行。

對我來說,最大的問題是使用ORDER BY進行排序。

例如,我需要在一個div中打印第一查詢行,在另一個div中打印第二查詢行,依此類推。

(SELECT 
      link as RelLink, 
      date as RelDate,
      title as RelTitle 
   FROM torrent 
   WHERE moderate = 1 
   ORDER BY date DESC LIMIT 0,12),
(SELECT 
      torrent as TorLink1, 
      date as TorDate1, 
      title as TorTitle1 
   FROM torrents 
   WHERE moderate = 1 AND genre = 1 
   ORDER BY date DESC LIMIT 10),
(SELECT 
      date as TorDate2, 
      torrent as TorLink2, 
      title as TorTitle2 
   FROM torrents 
   WHERE moderate = 1 AND genre = 2 
   ORDER BY date DESC LIMIT 10),
(SELECT 
      link as NewsLink1, 
      date as NewsDate1, 
      title as NewsTitle1 
   FROM news 
   WHERE moderate = 1
   ORDER BY date DESC LIMIT 0,10),
(SELECT 
      link as NewsLink2, 
      date as NewsDate2,
      title as NewsTitle2 
   FROM news 
   WHERE moderate = 1 
   ORDER BY date DESC LIMIT 10,10);

是的,可以按照您的要求做。 您的查詢之間需要UNION ALL 您還需要在每個你的項目中使用相同的別名為您列UNION荷蘭國際集團一起。

這是將為您完成的工作。 我沒有重復您所有的子查詢

SELECT Link, Date, Title 
FROM (
    SELECT link as Link, date as Date, title as Title 
      FROM torrent  WHERE moderate = 1 ORDER BY date DESC LIMIT 0,12
    UNION ALL
    SELECT torrent as Link, date as Date, title as Title 
      FROM torrents  WHERE moderate = 1 AND genre = 1 ORDER BY date DESC LIMIT 10
    UNION ALL
    SELECT torrent as Link, date as Date, title as Title
      FROM torrents WHERE moderate = 1 AND genre = 2 ORDER BY date DESC LIMIT 10 
    UNION ALL
   /* etc etc */
) AS query
ORDER BY Date DESC

請注意,如何使用相同的別名使所有列彼此一致?

如果要對這些項目進行重復數據刪除,請使用UNION而不是UNION ALL 由於重復數據刪除過程的原因,它有點慢,但是您只處理幾十行,所以這可能不是問題。

暫無
暫無

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

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