繁体   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