查询子表中种类数

k10509806 2016-11-24 04:07:48
我有两个表,一个订单表t_order,一个订单明细表t_order_item,他们通过order_id关联,其中t_order_item有个字段warehouse_id代表仓库。

问题:我想查询多个仓库的订单

比如
t_order_item

order_id warehouse_id
1 1
1 2
2 1
2 1

订单1就是多仓库的,因为有1, 2
订单2就是单仓库的,因为只有1

我写了一天总是写不好,大家有没有这方面的经验
SELECT * FROM t_order t_order
WHERE 1 =
(
SELECT COUNT(1)
FROM
(
SELECT inner_item.order_id
FROM t_order inner_order
GROUP BY inner_order.warehouse_id
) A
WHERE t_order.order_id= A.order_id
)

字表A里面查询非常慢,我想设置inner_order.order_id = t_order.order_id,又报t_order.order_id不存在,最外面的t_order传递不到里面嵌套两层的select语句

我们有几百万的订单数
据,
...全文
348 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 k10509806 的回复:
爽啊,终于给我研究出来了 GROUP BY inner_item.order_id HAVING COUNT(DISTINCT inner_item.warehouse_id) > 1
而且这个count中,还可以加上case when之类的,形成更复杂的,比如: GROUP BY inner_item.order_id HAVING COUNT(DISTINCT inner_item.warehouse_id) < count(case when xx=1 then inner_item.warehouse_id end) 关键看你的需求
k10509806 2016-11-24
  • 打赏
  • 举报
回复
爽啊,终于给我研究出来了 GROUP BY inner_item.order_id HAVING COUNT(DISTINCT inner_item.warehouse_id) > 1
致命的西瓜 2016-11-24
  • 打赏
  • 举报
回复
关联的两个表的order_id记得加索引
致命的西瓜 2016-11-24
  • 打赏
  • 举报
回复
SELECT order_id   ,COUNT(1) FROM (
SELECT DISTINCT order_id   ,warehouse_id FROM t_order_item )a
GROUP BY order_id    HAVING COUNT(1)>1
取出多仓库id之后再和订单表t_order关联
  • 打赏
  • 举报
回复
遇到同样问题,求助大神们?
k10509806 2016-11-24
  • 打赏
  • 举报
回复
求助啊,大伙们

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧