[英]Postgresql query: "greater than" statement returns values less than
我正在尝试 select 一列的值大于(>)另一列的行。 但是,它返回值小于另一列的行。
如果我使用小于运算符 (<),它将返回值小于另一列的行,就像预期的那样。 唯一的区别是行的顺序。
列的值是“varchar”,我已将其转换为“整数”用于查询。
询问
SELECT tripcode, CAST(expected AS int), CAST(capacity AS int) FROM super_plan WHERE expected > capacity;
这是大于 (>) 运算符的结果:
预期的 | 容量 |
---|---|
60 | 310 |
50 | 250 |
80 | 270 |
60 | 270 |
60 | 340 |
80 | 340 |
80 | 250 |
70 | 360 |
50 | 360 |
80 | 360 |
... | ... |
询问
SELECT tripcode, CAST(expected AS int), CAST(capacity AS int) FROM super_plan WHERE expected < capacity;
这是小于 (<) 运算符的结果:
预期的 | 容量 |
---|---|
100 | 310 |
200 | 310 |
230 | 310 |
280 | 310 |
150 | 310 |
100 | 250 |
200 | 250 |
190 | 250 |
160 | 250 |
110 | 270 |
... | ... |
我不知道为什么会这样。 我是 sql 的新手。 我已经搜索了 web 和 stackoverflow,但我找不到有用的东西。
实际上,需要将列转换为WHERE
子句中的整数,在该子句中进行比较:
SELECT tripcode, expected, capacity
FROM super_plan
WHERE expected::int > capacity::int;
如果您一直需要将这些列用作整数,则可以考虑更改列类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.