首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL多阶条件对每个条件的限制

问MySQL多阶条件对每个条件的限制
EN

Stack Overflow用户
提问于 2020-07-13 14:33:43
回答 2查看 55关注 0票数 0

实体Product (映射到表product)具有以下字段:

创建date)

  • numberOfLikes (接收到的likes)

  • numberOfComments数量(收到评论的数量)

我需要在每个页面中创建一个带有20元素的分页仪表板(没有重复的)。现在,我正在执行三个不同的查询来提取,然后将下列项合并到一个列表中:

WHERE id NOT IN

  • top

  • 最新的10种产品(由createdAt DESC订购)

  • 最受欢迎的5种产品(由numberOfLikes DESC订购) <==我手动地排除了第一个查询中的I,第一个查询中注释最多的产品(ORDER BY numberOfComments DESC) <==手动排除了第一个和第二个带有WHERE id NOT IN

的查询中的I

我想要创建一个单独的查询来提取之前的20个条目。有可能吗?

我正在使用MySQL与Doctrine (Symfony),我会感兴趣的原则兼容的解决方案。

EN

回答 2

Stack Overflow用户

发布于 2020-07-13 14:36:46

我认为在一个查询中不可能做到这一点。如果总帖子数量有限(就像仪表板上只有100个帖子一样),我将使用数组方法的组合。

票数 0
EN

Stack Overflow用户

发布于 2020-07-13 15:55:07

这需要使用UNION,这意味着您不能有与理论兼容的解决方案。

核心方法将与您在应用程序级别上所做的相同,除了丑陋。为了得到完全相同的行为,你必须做如下的事情

代码语言:javascript
复制
SELECT [text of first query]
UNION
SELECT [text of second query]
WHERE `id` NOT IN (
  SELECT `id` FROM (SELECT [text of first query])
)
UNION
SELECT [text of third query]
WHERE `id` NOT IN (
  SELECT `id` FROM (SELECT [text of first query])
)
AND `id` NOT IN (
  SELECT (SELECT `id` FROM [text of second query])
)

这意味着第一个查询独立执行三次,第二个查询执行两次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62878135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档