2017-09-13 109 views
-1

如果我把它放在一个查询文件中,PG将如何处理它?pg承诺在查询文件中支持WITH子句吗?

WITH regional_sales AS (
     SELECT region, SUM(amount) AS total_sales 
     FROM orders 
     GROUP BY region 
    ), top_regions AS (
     SELECT region 
     FROM regional_sales 
     WHERE total_sales > (SELECT SUM(total_sales)/10 FROM regional_sales) 
    ) 
SELECT region, 
     product, 
     SUM(quantity) AS product_units, 
     SUM(amount) AS product_sales 
FROM orders 
WHERE region IN (SELECT region FROM top_regions) 
GROUP BY region, product; 

是否需要使用WITH?我想有以下使用情况下,

SELECT * FROM balance WHERE bank_id = 1 FOR UPDATE(强制所有银行ID 1的记录被锁定)

SELECT * FROM balance WHERE bank_id = 1 AND amount = 500(先手与银行id为1,但仍排确保所有银行的ID记录1被锁定`

回答

-1

pg-promise不关心你的SQL是由,简单地发送到服务器上为是。

...这使你的问题无关/无效。

+0

感谢您的答复,我无法找到任何使用WITH子句和pg promise的人的例子。在你看来,WITH子句可以完全避免吗? – Zanko

+0

@Zanko您的问题与“pg-promise”无关。在GitHub上有很多例子,开发人员通过'pg-promise'执行'WITH'查询,这些查询又相互无关。 –