2015-10-18 46 views
0

我有很多视图需要转换为公用表,因为where条件需要动态更改。我只能使用公共表来处理一个子查询。是否有可能在下面的例子中如何构建具有多个嵌套查询的公共表

WITH ctTableA AS (Select * FROM tableA WHERE fldAID=A) 

WITH ctTableB AS (Select * FROM tableB WHERE fldAID=A) 

SELECT * FROM ctTableA 
INNER JOIN ctTableB ON ctTableA.fldX=ctTableB.fldX 

NB使用一个以上的为: - 我知道,简单内连接的2个表的查询将在这个例子中工作,但我真正的查询要复杂得多。

我特别要求的是;我们能不能有超过1 with语句共同TABLE语句

+0

MySQL不支持热膨胀系数,所以我删除了标签。 –

回答

2

内试试这个

WITH 
ctTableA AS (Select * FROM tableA WHERE fldAID=A), 
ctTableB AS (Select * FROM tableB WHERE fldAID=A) 

SELECT * FROM ctTableA INNER JOIN ctTableB ON ctTableA.fldX=ctTableB.fldX 
+0

谢谢塞尔吉奥,它适用于单层嵌套查询。但是,多级嵌套查询呢,例如 WITH WITH ctTableA AS(Select * FROM tableA WHERE fldAID = A),ctTableB AS(Select * FROM tableB WHERE fldAID = A),ctQueryA AS(Select * FROM ctTableB where fldY = Y SELECT * FROM ctTableA INNER JOIN ctQueryA ON ctTableA.fldX = ctQueryA .fldX' – Sheils

+0

Hi Sheils。我已经回答“我们可以在一个公共表格语句中使用多于一个的语句”,我看到你声明了多个WITH,代码如果这不是你想要的结果,我不完全确定你想要实现什么。 – Sergio

+0

@Sheils这是一个不同的问题,无论如何,什么阻止你只是试一试? –