【问题标题】:How to SELECT records from a temp table applying a specific condition?如何从应用特定条件的临时表中选择记录?
【发布时间】:2021-04-19 18:07:07
【问题描述】:

我已将文件转储到临时表中并尝试提取分数

SELECT CAST(sum AS numeric ),* FROM temp WHERE sum >= '100' ;

【问题讨论】:

    标签: sql postgresql select


    【解决方案1】:

    这里有两个问题。首先,您使用的是>= 运算符而不是<= 运算符。其次,sum 似乎是一个字符串列,因此按字典顺序进行比较。您可以应用您在选择列表中应用的相同转换并将值与数字文字 100 进行比较,而不是字符串文字 '100':

    SELECT CAST(sum AS numeric ),* FROM temp WHERE CAST(sum AS numeric) >= 100;
    

    【讨论】:

    • 非常感谢您的快速回复。效果很好。
    • 让我们扩展一下@Mureinki 的回答。这不仅仅是句法上的差异。它对结果有非常实际的影响。请记住,值“20”的文本大于值“100”或以“1”开头的任何其他值。其次,作为构造,您将获得两次 SUM 列,作为种姓和选择 *(所有列)的结果。 (见example)。最后,SUM 作为列名非常糟糕,因为它是 SQL 保留字和 Postgres 聚合函数名。充其量只会导致混乱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多