【问题标题】:How to order result according to another table in mysql如何根据mysql中的另一个表对结果进行排序
【发布时间】:2020-11-20 07:47:55
【问题描述】:

我想根据另一张表选择产品以便畅销。

select product_id
       from wp_product_details_fields
       where field in ( 'brand', 'model')
       group by product_id
       having  (  max(`field` = 'brand' and `value` = 'Intel') = 1 
                  OR
                  max(`field` = 'model' and `value` = 'Core i7') = 1  ) 
       order by (SELECT COUNT(*) AS magnitude 
                        FROM wp_order_items 
                        GROUP BY product_id 
                        ORDER BY magnitude DESC)

我遇到了这个错误:

MySQL 说:子查询返回多于 1 行

【问题讨论】:

  • 子查询中只能有 1 行。也很高兴看到你的桌子结构

标签: mysql sql sql-order-by inner-join where-clause


【解决方案1】:

查询:

SELECT product_id
FROM (your complex query w/o ORDER BY) wpd
Left JOIN wp_order_items USING (product_id)
GROUP BY product_id
ORDER BY COUNT(*) /* DESC */

【讨论】:

  • 我简化了查询以达到重点,但我的原始查询是我刚刚编辑的。请再次检查
  • 谢谢,唯一的问题是这个查询只对 wp_order_items 表中的产品进行排序。我只是想对最畅销的商品进行排序,而不是删除它们。即使现在存在于 wp_order_items 表中,我如何获取行?
  • 我发现我应该使用left Join,谢谢你的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
  • 2016-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多