факторинг подзапроса не может работать в PostgreSQL - PullRequest
0 голосов
/ 26 октября 2018

когда я использую postgresql, я сталкиваюсь с проблемой. Вот код:

    WITH t1 AS (
    SELECT
    TABLE_NAME AS TABELA
FROM
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    COLUMN_NAME LIKE 'nu_cns' )
SELECT 
    TABLE_NAME,
    COLUMN_NAME
FROM 
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    TABLE_NAME IN t1

Если я запустлю его, я получу ошибку:

ERROR:  syntax error at or near "t1"
LINE 14:  TABLE_NAME IN t1
                    ^
SQL state: 42601
Character: 211

Но что странно, так это то, что если я заменю t1 целым подзапросом, он может успешно работать, как здесь:

    WITH t1 AS (
    SELECT
    TABLE_NAME AS TABELA
FROM
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    COLUMN_NAME LIKE 'nu_cns' )
SELECT 
    TABLE_NAME,
    COLUMN_NAME
FROM 
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    TABLE_NAME IN (
    SELECT
    TABLE_NAME AS TABELA
FROM
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    COLUMN_NAME LIKE 'nu_cns' )

Видите ли, на самом деле подзапрос точно такой же с t1.Так почему первый не может работать? Спасибо!

1 Ответ

0 голосов
/ 26 октября 2018

Попробуйте ниже: вам нужно выбрать table_name из t1 в подзапросе

WITH t1 AS 
( 
  SELECT TABLE_NAME AS TABELA
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE COLUMN_NAME LIKE 'nu_cns' 
)

SELECT 
    TABLE_NAME,
    COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME IN (select table_name from t1)
...