Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在尝试筛选别名列中的空值-postgresql?_Sql_Postgresql - Fatal编程技术网

正在尝试筛选别名列中的空值-postgresql?

正在尝试筛选别名列中的空值-postgresql?,sql,postgresql,Sql,Postgresql,使用以下postgresql命令: select id, page -> 'link' as link, login_time from my_table limit 200 我想添加一个where子句来过滤掉链接值不为null的地方——因此它包含一个值 当我运行以下命令时,会收到一条错误消息: select id, page -> 'link' as link, login_time from my_table where link is not null limit

使用以下postgresql命令:

select 
id, page -> 'link' as link, login_time
from 
my_table 
limit 200
我想添加一个where子句来过滤掉链接值不为null的地方——因此它包含一个值

当我运行以下命令时,会收到一条错误消息:

select 
id, page -> 'link' as link, login_time
from 
my_table 
where link is not null
limit 200
找不到列链接


关于如何解决此问题,您有什么想法吗?

在SQL
查询中选择

从语法上讲,顺序是:

  • 挑选
  • 在哪里
  • 分组
  • 拥有
  • 订购人
  • 但逻辑顺序(忽略某些边缘情况以及诸如窗口函数和RDBMS特定列别名之类的内容)是:

  • 在哪里
  • 分组
  • 拥有
  • 挑选
  • 订购人
  • 由于
    SELECT
    发生在
    WHERE
    (和
    HAVING
    )之后,您需要将依赖于您的投影的谓词(您的
    SELECT
    子句)放入外部查询中

    SELECT
        *
    FROM
        (
            SELECT
                id,
                page -> 'link' AS link,
                login_time
            FROM
                my_table
        ) AS iq
    WHERE
        iq.link IS NOT NULL
    LIMIT
        200
    
    或者,您仍然可以在
    WHERE
    子句中进行测试,这只是意味着必须重复您自己:

    SELECT
        id,
        page -> 'link' AS link,
        login_time
    FROM
        my_table
    WHERE
        ( page -> 'link' ) IS NOT NULL
    LIMIT
        200
    
    (个人咆哮:SQL的干巴巴的语法已经让我个人恼怒了至少十年了——我不明白自1975年SQL标准化至今已经44年了,但没有一家主要的SQL供应商采取行动将语法现代化,使其不那么愚蠢。MySQL确实引入了一些奇怪的东西,如special
    GROUP BY
    行为和别名,但自第8版以来,他们决定变得更加一致,而不是为了程序员的人体工程学而推动更改-因此,在供应商认真考虑SQL现代化之前,我们将陷入一个短视和武断的美学决策中,甚至在计算机的显示器能够显示更多的SQL之前一次40行)