【发布时间】:2018-06-14 11:08:27
【问题描述】:
为了尝试按照this recommendation 编写更具可读性的SQL 代码,我正在尝试使用WITH 子句。
在这里有效:
WITH
t AS
(
SELECT
*
FROM
TABLE1
WHERE
COL1 = 'foo'
)
SELECT
*
FROM
t
WHERE
COL2 > 42
但在以下情况下不起作用:
WITH
t AS
(
SELECT
COL1
FROM
TABLE1
)
SELECT
*
FROM
TABLE2
WHERE
COL2 IN t
它返回以下错误:
1) [代码:-206,SQL 状态:42703] “T”在上下文中无效 它在哪里使用.. SQLCODE=-206, SQLSTATE=42703, DRIVER=4.22.29
以防我不清楚上面的非工作查询是什么意思,下面是:
SELECT
*
FROM
TABLE2
WHERE
COL2 IN
(
SELECT
COL1
FROM
TABLE1
)
如何在IN 子句中为WITH 子句使用表?
【问题讨论】:
标签: sql db2 common-table-expression readability