【问题标题】:PostgreSQL - Get all rows with min max valuePostgreSQL - 获取所有具有最小值最大值的行
【发布时间】:2020-12-10 15:15:31
【问题描述】:

我有一个 PostgreSQL 表,我在表中有一个用于 unix_time 类型为 bigint 的列。

当向表中添加新行时,时间戳会添加到 unix_time 列中。

我正忙着编写一个 Python 脚本来提取时间 A 和时间 B 之间的所有行,我当前的解决方案是使用 while 循环遍历表中从第一行到最后一行的每一行。

有没有更有效的方法来做到这一点?

有没有办法让我只选择值在给定范围内的特定行 - 或值大于或等于给定整数的行?

【问题讨论】:

  • 是的:SELECT ... FROM ... WHERE tscol BETWEEN ... AND ...

标签: sql python-3.x postgresql datetime where-clause


【解决方案1】:

您将描述where 子句:

select *
from mytable
where unix_time >= $1 and unix_time < $2

$1 和 $2 是查询的参数,表示您要过滤的区间范围。

您可能希望根据实际情况调整不等式;这使用半开区间,这是一种广泛使用的解决方案。如果想要两边都包含一个区间,也可以使用between:

where unix_time between $1 and $2

【讨论】:

  • 非常感谢!
【解决方案2】:

试试 BETWEEN 子句。搜索一些很好的例子。这是一个页面。

https://kb.objectrocket.com/postgresql/using-the-postgres-between-sql-operator-740#:~:text=In%20PostgreSQL%2C%20BETWEEN%20is%20typically%20used%20as%20part,that%20match%20values%20found%20between%20x%20and%20y.

SELECT t_name_product
FROM Products
WHERE c_price BETWEEN x AND y;

或 选择 t_name_product 来自产品 WHERE c_price > x AND c_price

请记住,如果您使用 AND 或 OR,您会得到不同的结果。

关于大于或等于的最后一个问题:

SELECT t_name_product 
FROM Products
WHERE Price >= 100;

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-06
  • 2020-08-16
  • 1970-01-01
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多