代码之家  ›  专栏  ›  技术社区  ›  Georg Schölly Crazy Developer

如何向sql查询添加大数组?

  •  0
  • Georg Schölly Crazy Developer  · 技术社区  · 16 年前

    这是我的风暴代码:

    items = store.find((Delivery, Product, Sum(Delivery.quantity)),
                        Delivery.id.is_in(order.id for order in self.orders),
                        Product.id == Delivery.product_id) \
                        .group_by(Delivery.date, Product.id, Delivery.discount) \
                        .order_by(Delivery.date, Product.name, Delivery.discount)
    

    这转换为以下SQL:

       SELECT deliveries.id, products.id, SUM(deliveries.quantity)
       FROM deliveries, products
       WHERE products.id = deliveries.id AND
    ->       deliveries.id IN (1,10,5,24,122, ...)
       GROUP BY deliveries.date, product.id, delivery.discount
       ORDER BY deliveries.date, product.id, delivery.discount
    

    如果 self.orders 太长了,A SQL变量太多 引发异常。

    有没有别的方法可以达到这个目的?

    我的唯一想法是为每个订单创建一个查询,并使用字典手动组合它们。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Unsliced    16 年前
    • 将它添加到临时表/表变量并链接到它。
    • 根据您的sql版本,您可以使用xml对象
        2
  •  0
  •   hsz    16 年前

    也许把这个目标阵列分成更小的?大约是它大小的1/3,然后在脚本端合并它。

    推荐文章