Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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
Sql 为什么我会得到专栏;完";不存在吗?_Sql_Postgresql_Sql Order By - Fatal编程技术网

Sql 为什么我会得到专栏;完";不存在吗?

Sql 为什么我会得到专栏;完";不存在吗?,sql,postgresql,sql-order-by,Sql,Postgresql,Sql Order By,我试图在SQL中按进行有条件的排序,但我得到一个错误:列“end”不存在指向查询的“case when”部分 我的问题是: SELECT (EXTRACT(EPOCH FROM SUBMISSION_DEADLINE) -EXTRACT(EPOCH FROM now())) AS "datediff" , (EXTRACT(EPOCH FROM SUBMISSION_DEADLINE)>EXTRACT(EPOCH FROM now())) AS "ended", *

我试图在SQL中按进行有条件的排序,但我得到一个错误:
列“end”不存在
指向查询的“case when”部分

我的问题是:

SELECT (EXTRACT(EPOCH FROM SUBMISSION_DEADLINE)
       -EXTRACT(EPOCH FROM now())) AS "datediff"
    , (EXTRACT(EPOCH FROM SUBMISSION_DEADLINE)>EXTRACT(EPOCH FROM now())) AS "ended", *
FROM imdown_api_v1_contest
ORDER BY "ended" DESC, case when "ended" = true then "datediff" else "-datediff" END ASC;

我需要抓住那些还没有先结束的比赛,然后按最快结束的比赛排序。然后,我需要所有已结束的,并按最近结束的排序。

结束
在执行order by时未定义,sql按下一个顺序执行查询:

  • 在哪里
  • 命令
  • 挑选
  • 因此,您需要将完整表达式复制到
    order by
    子句中,或者使用子查询,如:

    select * from (
        SELECT (EXTRACT(EPOCH FROM SUBMISSION_DEADLINE)-EXTRACT(EPOCH FROM now())) AS "datediff", (EXTRACT(EPOCH FROM SUBMISSION_DEADLINE)>EXTRACT(EPOCH FROM now())) AS "ended", *
        FROM imdown_api_v1_contest
    ) tmpq
    ORDER BY "ended" DESC, case when "ended" = true then "datediff" else "-datediff" END ASC
    

    执行order by时未定义列
    END
    ,sql按下一个顺序执行查询:

  • 在哪里
  • 命令
  • 挑选
  • 因此,您需要将完整表达式复制到
    order by
    子句中,或者使用子查询,如:

    select * from (
        SELECT (EXTRACT(EPOCH FROM SUBMISSION_DEADLINE)-EXTRACT(EPOCH FROM now())) AS "datediff", (EXTRACT(EPOCH FROM SUBMISSION_DEADLINE)>EXTRACT(EPOCH FROM now())) AS "ended", *
        FROM imdown_api_v1_contest
    ) tmpq
    ORDER BY "ended" DESC, case when "ended" = true then "datediff" else "-datediff" END ASC
    

    执行order by时未定义列
    END
    ,sql按下一个顺序执行查询:

  • 在哪里
  • 命令
  • 挑选
  • 因此,您需要将完整表达式复制到
    order by
    子句中,或者使用子查询,如:

    select * from (
        SELECT (EXTRACT(EPOCH FROM SUBMISSION_DEADLINE)-EXTRACT(EPOCH FROM now())) AS "datediff", (EXTRACT(EPOCH FROM SUBMISSION_DEADLINE)>EXTRACT(EPOCH FROM now())) AS "ended", *
        FROM imdown_api_v1_contest
    ) tmpq
    ORDER BY "ended" DESC, case when "ended" = true then "datediff" else "-datediff" END ASC
    

    执行order by时未定义列
    END
    ,sql按下一个顺序执行查询:

  • 在哪里
  • 命令
  • 挑选
  • 因此,您需要将完整表达式复制到
    order by
    子句中,或者使用子查询,如:

    select * from (
        SELECT (EXTRACT(EPOCH FROM SUBMISSION_DEADLINE)-EXTRACT(EPOCH FROM now())) AS "datediff", (EXTRACT(EPOCH FROM SUBMISSION_DEADLINE)>EXTRACT(EPOCH FROM now())) AS "ended", *
        FROM imdown_api_v1_contest
    ) tmpq
    ORDER BY "ended" DESC, case when "ended" = true then "datediff" else "-datediff" END ASC
    

    您的查询在多个位置被破坏或效率低下,而不仅仅是对列别名的非法引用。这可能会达到您的目的:

    SELECT EXTRACT(EPOCH FROM now() - submission_deadline) AS datediff
         , now() > submission_deadline AS ended  -- I inverted your expression!
         , *
    FROM   imdown_api_v1_contest
    ORDER  BY 2  -- positional reference to output column
         , @(EXTRACT(EPOCH FROM now() - submission_deadline))
    
    通常,“结束”的竞赛在过去有一个
    提交截止日期
    ,因此
    now()>提交截止日期是结束的
    ,而不是相反

    要修复主要语法错误,我使用位置引用而不是列别名。详细说明:

    相关示例:


    为了达到您想要的顺序,我使用了。

    您的查询在多个地方被破坏或效率低下,而不仅仅是对列别名的非法引用。这可能会达到您的目的:

    SELECT EXTRACT(EPOCH FROM now() - submission_deadline) AS datediff
         , now() > submission_deadline AS ended  -- I inverted your expression!
         , *
    FROM   imdown_api_v1_contest
    ORDER  BY 2  -- positional reference to output column
         , @(EXTRACT(EPOCH FROM now() - submission_deadline))
    
    通常,“结束”的竞赛在过去有一个
    提交截止日期
    ,因此
    now()>提交截止日期是结束的
    ,而不是相反

    要修复主要语法错误,我使用位置引用而不是列别名。详细说明:

    相关示例:


    为了达到您想要的顺序,我使用了。

    您的查询在多个地方被破坏或效率低下,而不仅仅是对列别名的非法引用。这可能会达到您的目的:

    SELECT EXTRACT(EPOCH FROM now() - submission_deadline) AS datediff
         , now() > submission_deadline AS ended  -- I inverted your expression!
         , *
    FROM   imdown_api_v1_contest
    ORDER  BY 2  -- positional reference to output column
         , @(EXTRACT(EPOCH FROM now() - submission_deadline))
    
    通常,“结束”的竞赛在过去有一个
    提交截止日期
    ,因此
    now()>提交截止日期是结束的
    ,而不是相反

    要修复主要语法错误,我使用位置引用而不是列别名。详细说明:

    相关示例:


    为了达到您想要的顺序,我使用了。

    您的查询在多个地方被破坏或效率低下,而不仅仅是对列别名的非法引用。这可能会达到您的目的:

    SELECT EXTRACT(EPOCH FROM now() - submission_deadline) AS datediff
         , now() > submission_deadline AS ended  -- I inverted your expression!
         , *
    FROM   imdown_api_v1_contest
    ORDER  BY 2  -- positional reference to output column
         , @(EXTRACT(EPOCH FROM now() - submission_deadline))
    
    通常,“结束”的竞赛在过去有一个
    提交截止日期
    ,因此
    now()>提交截止日期是结束的
    ,而不是相反

    要修复主要语法错误,我使用位置引用而不是列别名。详细说明:

    相关示例:


    要实现所需的顺序,我使用。

    一个选项是将查询(不带
    orderby
    )移动到子查询中,然后将
    orderby
    添加回。这应该可以识别
    结束
    列…一个选项是将您的查询(不带
    orderby
    )移动到子查询中,然后将
    orderby
    添加回去。这应该可以识别
    结束
    列…一个选项是将您的查询(不带
    orderby
    )移动到子查询中,然后将
    orderby
    添加回去。这应该可以识别
    结束
    列…一个选项是将您的查询(不带
    orderby
    )移动到子查询中,然后将
    orderby
    添加回去。这应该可以识别
    结束
    列……有没有办法让这些限制和抵消条款起作用?@Tyler:我看这里的
    限制
    抵消
    没有问题。。。也许开始一个新问题来清楚地陈述你的情况?不管是哪种方式,都要考虑对手提问题的更新查询。有没有办法用限制和偏移子句来实现这些工作?@泰勒:我没有看到<代码>限制< /代码>和<代码>偏移< /代码>的问题…也许开始一个新问题来清楚地陈述你的情况?不管是哪种方式,都要考虑对手提问题的更新查询。有没有办法用限制和偏移子句来实现这些工作?@泰勒:我没有看到<代码>限制< /代码>和<代码>偏移< /代码>的问题…也许开始一个新问题来清楚地陈述你的情况?不管是哪种方式,都要考虑对手提问题的更新查询。有没有办法用限制和偏移子句来实现这些工作?@泰勒:我没有看到<代码>限制< /代码>和<代码>偏移< /代码>的问题…也许开始一个新问题来清楚地陈述你的情况?无论哪种方式,考虑对当前问题的更新查询。