pgsql递归查询父级
时间: 2023-11-17 18:08:09 浏览: 43
以下是pgsql递归查询父级的例子:
```sql
WITH RECURSIVE dict AS (
SELECT * FROM sort WHERE id= '1'
UNION ALL
SELECT sort.* FROM sort, dict WHERE sort.id = dict.parent_id
)
SELECT id AS id, name as name, parent_id as parentId FROM dict ORDER BY name;
```
这个例子中,我们使用了WITH RECURSIVE语句来递归查询父级。首先,我们从sort表中选择id为1的行作为起始点。然后,我们使用UNION ALL将sort表中的行与虚拟表dict中的行连接起来,直到找到所有的父级为止。最后,我们从虚拟表dict中选择id、name和parentId列,并按名称排序。
相关问题
pgsql 数组查询
pgsql数组查询是指在PostgreSQL数据库中,通过使用数组类型和相关的操作符和函数,来查询包含数组的数据表中的数据。在pgsql数组查询中,可以使用模糊查询、等值匹配、在列表中查询等方式来查询数组类型的数据。其中,模糊查询可以使用#>>和#<<操作符,等值匹配可以使用::int操作符,而在列表中查询可以使用jsonb_array_elements函数。需要注意的是,在使用数组查询时,需要指定数组的下标,否则查询可能会出现错误。
pgsql java查询
要在Java中进行PostgreSQL数据库查询,需要使用JDBC驱动程序来连接数据库和执行查询语句。以下是一个简单的Java代码示例,演示如何连接到PostgreSQL数据库并执行查询:
```java
import java.sql.*;
public class PostgreSQLJDBC {
public static void main( String args[] ) {
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/testdb", "username", "password");
System.out.println("Opened database successfully");
stmt = c.createStatement();
String sql = "SELECT id, name, age FROM mytable";
ResultSet rs = stmt.executeQuery(sql);
while ( rs.next() ) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println( "ID = " + id );
System.out.println( "NAME = " + name );
System.out.println( "AGE = " + age );
System.out.println();
}
rs.close();
stmt.close();
c.close();
} catch ( Exception e ) {
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
System.exit(0);
}
System.out.println("Operation done successfully");
}
}
```
在这个例子中,我们使用JDBC驱动程序连接到名为testdb的本地PostgreSQL数据库。然后,我们执行一个简单的SELECT语句来检索mytable表中的数据,并将结果打印到控制台上。
请注意,您需要将代码中的“username”和“password”替换为您的PostgreSQL数据库的凭据。