[英]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.