首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在psql中如何在同一张表中分别显示一个人的父母

在psql中,可以使用自连接(self join)的方式在同一张表中分别显示一个人的父母。以下是具体的步骤:

  1. 首先,假设我们有一张名为"person"的表,其中包含了人员的信息,包括姓名和父母的关联信息。
  2. 创建一个自连接的查询,将表与自身连接起来。在查询中,使用别名来区分两个不同的表实例,一个用于代表人员自身,另一个用于代表父母。
代码语言:txt
复制
SELECT p.name AS person_name, f.name AS father_name, m.name AS mother_name
FROM person p
JOIN person f ON p.father_id = f.person_id
JOIN person m ON p.mother_id = m.person_id
WHERE p.name = '某个人的姓名';

在这个查询中,我们使用了两次表"person"的实例。第一个实例通过别名"p"表示要查询的人员自身,第二个实例通过别名"f"表示要查询的人员的父亲,第三个实例通过别名"m"表示要查询的人员的母亲。

我们使用了两次的"JOIN"语句来连接这两个表实例。第一个"JOIN"语句连接了人员自身和父亲的信息,通过"father_id"字段和"person_id"字段进行关联。第二个"JOIN"语句连接了人员自身和母亲的信息,通过"mother_id"字段和"person_id"字段进行关联。

最后,我们使用了"WHERE"子句来指定要查询的人员姓名,这个姓名可以替换为具体的人员姓名。

通过执行以上查询,你可以在同一张表中分别显示一个人的父亲和母亲的信息。如果有多个符合条件的结果,将会显示多行数据。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PostgreSQL入门和高维向量索引

内部命令,以反斜线开始 \ ,如: \l 显示所有数据库 2....\d:列出当前数据库的所有表格。 \d [table_name]:列出某一张表格的结构。 \du:列出所有用户。 \e:打开文本编辑器。...1、列举数据库:\l 2、选择数据库:\c 数据库名 3、查看该某个库中的所有表:\dt 4、切换数据库:\c interface 5、查看某个库中的某个表结构:\d 表名 6、查看某个库中某个表的记录...我们可以通过用逗号分隔的方法声明多个数据库。 一个包含数据库名的文件可以通过对该文件前缀 @ 来声明.该文件必需和 pg_hba.conf 在同一个目录。...一个包含用户名的文件可以 通过在文件名前面前缀 @ 来声明,该文件必需和 pg_hba.conf 在同一个目录。

1.7K30
  • 从零开始学PostgreSQL (一):Centos8 RPM安装PostgreSQL16

    #pg_ident.conf 此文件用于用户名称映射,它允许将外部认证系统(如 LDAP 或者系统用户账户)的用户名映射到 PostgreSQL 数据库角色。这对于整合外部认证系统非常有用。...#postgresql.auto.conf 当 postgresql.conf 被重新加载时,任何在运行时动态更改的设置都会被写入这个文件。...psql快捷命令 快捷命令 别名 描述 \c \connect 连接到指定的数据库 \q \quit 退出 psql 客户端 \list \l 列出所有可用的数据库 \dt 列出当前数据库中的所有表...显示所有可用的元命令 \echo \e 输出一条信息 \timing 开启或关闭命令执行时间的显示 \set 设置一个变量 \unset 取消设置一个变量 \include \i 包含一个文件的内容...\watch 监视表的变化 \unwatch 取消监视表的变化 \copy 用于数据导入导出的 COPY 命令的简化形式 \password 更改用户密码 安装报错 [root@ PostgreSQL

    16210

    如何在Ubuntu 16.04上安装和使用PostgreSQL

    在本指南中,我们将演示如何在Ubuntu 16.04 VPS实例上安装Postgres,并介绍一些使用它的基本方法。...在不切换帐户的情况下访问Postgres提示 您也可以直接使用有sudo权限的postgres帐户运行您想要的命令。 例如,在最后一个示例中,我们只想进入Postgres提示符。...----------+-------+------- public | playground | table | sammy (1 row) 在表中添加,查询和删除数据 现在我们有了一个表,我们可以在其中插入一些数据...让我们添加一张幻灯片和一个秋千。我们通过调用我们想要添加的表,命名列然后为每列提供数据来完成此操作。...如果我们发现我们的工作人员使用单独的工具来跟踪维护历史记录,我们可以通过键入以下内容来删除此列: ALTER TABLE playground DROP last_maint; 如何更新表中的数据 我们知道如何向表中添加记录以及如何删除它们

    5.3K10

    PG Logical Replication 逻辑复制

    PG10 到 PG11 的逻辑复制 我下面演示的PG环境是单机多实例的方式部署在同一台物理机上的。部署方式可以参考 上一篇博客。.../bin/psql --port 5434 -d postgres -f /usr/local/pgsql-10.10/schemadump.sql 5、在源实例PG10中的每个数据库中,创建一个捕获所有表的发布...注意:逻辑复制在每个数据库中分别工作,因此需要在每个数据库中重复。...),同时表中必须包含主键,否则delete和update报错 4、一个publisher可以包含一张或多张表,一张表可以有一个或多个publishers 5、一个发布者可以有多个订阅者订阅,一个订阅者也可以同时订阅多个发布者...,在同一个数据库下订阅者不能对同一个发布者的表重复订阅(避免数据冲突) 6、逻辑复制不同于流复制,不是严格的主从关系,订阅者端的普通表依然可以进行增删改操作 7、同步表的表结构需要在发布者和订阅者两边保持一致

    1.6K20

    如何在Ubuntu 18.04上安装和使用PostgreSQL

    例如,在最后一个示例中,您被指示通过首先切换到postgres用户然后运行psql以打开Postgres提示来进入Postgres提示。...例如,不要将列名包装在引号中,但是您输入的列值确实需要引号。 另外要记住的是,您不要为equip_id列输入值。这是因为只要创建表中的新行,就会自动生成此项。...添加和删除表中的列 创建表后,您可以修改它以相对容易地添加或删除列。...更新表中的数据 到目前为止,您已经学习了如何向表中添加记录以及如何删除它们,但本教程尚未介绍如何修改现有条目。 您可以通过查询所需的记录并将列设置为您要使用的值来更新现有条目的值。...您可以查询“swing”记录(这将匹配表中的每个 swing)并将其颜色更改为“red”。

    5.5K60

    Oracle 经典面试题分享

    中id一样的为同一个人的属性 查询结果中列依次为姓名、性别、年龄,而type列决定姓名、性别、年龄 */ /*使用分组,先对t_id进行分组,然后用decode函数过滤数据,例:decode(type...同一个人的type没有重复数值所以 decode(type, 1, value)返回的值只有一个,最大值也就是这个值 */ select max(decode(type, 1, value)) "姓名"...通过where过滤生成3张type分别等于1(姓名)、2(性别)、3(年龄)的3张虚拟表 如: 再通过where 连接条件 三张表t_id相等的为同一个人或者说同一条记录(行) */ select t1...其中有3条记录分别表示语文70分,数学80分,英语58分, 请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路): 大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格...形成的表里deptno只有1和二月份、三月份形成的表中的deptno无法匹配 而yjdept表中包含了所有部门编号deptno,这时就可以用到外连接的特性 (在满足一张表的内容都显示的基础上,连接另外一张表

    32120

    PostgreSQL主从复制--逻辑复制

    ,实时的在备库apply,事务结束时,备库立马能见到数据 物理复制的一致性、可靠性高,不必担心数据逻辑层面不一致 但是其又在实际使用的场景中存在一些无法满足的需求,例如: 无法满足指定库或部分表的复制需求...将多个数据库实例的数据汇聚到同一个目标库或将一个库的数据分发到多个不同的库 不同的版本之间的复制 不同库名之间的表同步 对于以上场景,物理复制时无法满足的,因此逻辑复制应运而生了。...逻辑复制的部署 PS:以下的逻辑从库可以在新的机器上部署,如在原先的从库上修改,需停止原实例,并将recovery.conf文件删除或重命名(如修改为recovery.conf.done) 2.1 修改主库的...2.10 添加复制所需的表 在逻辑主库和逻辑从库均添加一张新表,并添加到发布列表中 /** 主库上创建表结构 */ sourcedb=# create table logical_tb2(id int...------------ pub1 | public | logical_tb1 pub1 | public | logical_tb2 (2 rows) 此时已加入一张表进入发布列表中

    4.5K31

    Oracle经典面试题,你都掌握了吗?

    3代表年龄,而t_id中id一样的为同一个人的属性 查询结果中列依次为姓名、性别、年龄,而type列决定姓名、性别、年龄 */ /*使用分组,先对t_id进行分组,然后用decode函数过滤数据,例:...同一个人的type没有重复数值所以 decode(type, 1, value)返回的值只有一个,最大值也就是这个值 */ select max(decode(type, 1, value)) "姓名"...通过where过滤生成3张type分别等于1(姓名)、2(性别)、3(年龄)的3张虚拟表 如: 再通过where 连接条件 三张表t_id相等的为同一个人或者说同一条记录(行) */ select...,而用分组做,使用yj01表就能做出来了,所以这道题考察的应该是连表的知识/*这两张表中有的月份有的部门业绩是空的,而用前几道题的做法,不匹配条件的值会被过滤掉,例如month=一月份的只有1部门,形成的表里...deptno只有1和二月份、三月份形成的表中的deptno无法匹配而yjdept表中包含了所有部门编号deptno,这时就可以用到外连接的特性(在满足一张表的内容都显示的基础上,连接另外一张表,如果连接匹配则正常显示

    1.1K20

    如何在Debian 8上安装和使用PostgreSQL 9.4

    在本文中,我们将向您展示如何在新的Debian 8 Stable实例上安装PostgreSQL并开始使用。 准备 第一件事是让Debian 8 Stable系统继续运行。...安装PostgreSQL 在安装PostgreSQL之前,请确保通过更新apt包列表来获取Debian存储库中的最新信息: sudo apt-get update 您应该看到正在更新的包列表以及以下消息...column_name2 col_type (field_length), column_name3 col_type (field_length) ); 如您所见,我们为表提供一个名称,然后定义我们想要的列...添加,查询和删除表中的数据 现在我们已经创建了一个表,我们可以在其中插入一些数据。 让我们添加一张幻灯片和一个swing。我们通过调用我们想要添加的表,命名列然后为每列提供数据来完成此操作。...如果我们的幻灯片断开,我们将它从操场上移除,我们也可以通过键入以下内容从表中删除行: DELETE FROM playground WHERE type = 'slide'; 如果我们再次查询我们的表:

    4.3K00

    RavenDB建模--常见建模方案

    在 RavenDB 中对如何在应用程序中进行数据建模没有任何要求,我们可以使用任何形式进行建模,RavenDB 只关心如何构建数据,这就是我们后续几篇文章要讲解的内容。...嵌入文档 文档模型和实体关系模型是不一样的,一般来说在实体关系模型中每个实体都有一个对应的表,但是在文档模型中则不是这样,我们一般会像下面代码这样将所有紧密相关的信息存储在一个地方。...但是这种方法在以下集中情况下是不可用的: 当数据不属于同一文档时; 当附属内容不仅仅是住内容的附属内容时,比如说王加加和张油油不仅是张感叹的父母,还是张句号的父母时。...多对一 针对上一小节内容,我们可以利用多对一关系进行解决,将父母的标识符存储在 Child 中,如下面所示: { "Name": "张感叹", "Birthday": "2019...说我们有三种方法: 在 Child 文档中添加一个数组,数组中存储祖父母辈的文档 ID; 在祖父母辈的文档中添加一个数组,数组中存储孙子辈的文档ID; 两者相互存储。 那么到底哪种方法更好呢?

    52510

    林元庆破解小度问鼎最强大脑三大原理,后吴恩达时代百度 AI 突围

    挑战二:亲爱的(小度VS人类选手) 比赛项目:嘉宾在40张父母合照中随机挑选一张,选手和小度同时观察该照片,在40位造型一致,身材接近的女生中,找到该父母的亲生女儿,找出的女儿手中全家福照片与父母合照背面的全家福完全一致...嘉宾在40张父母合照中随机挑选一张,选手和小度同时观察该照片,在40位造型一致,身材接近的女生中,找到该父母的亲生女儿,找出的女儿手中全家福照片与父母合照背面的全家福完全一致,则挑战成功。...这项挑战所涉及的“隔代识别”仍属于图像识别分类中的人脸识别,只是难度更大。隔代识别技术原理与人脸识别相同:形成灰度图,分别提取父母面部的特征点和孩子的特征点进行比对。...声纹确认技术回答的是两句话到底是不是一个人说的问题,而声纹识别技术回答的则是”给定的一句话属于样本库中谁说的”问题。 在本次挑战中,小度需要识别出一段笑声是谁发出的。技术上主要难点包括: 1....而在本次比赛中,注册的语音则变成了唱歌,测试的才是正常说话。因此,模型必须能够学到同一个人在唱歌和说话时的差异。这对声纹识别算法的泛化能力提出了更高的要求。 2.

    1K60

    如何在Ubuntu 18.04中安装PostgreSQL高级开源数据库

    在本文中,我们将学习如何在Ubuntu 18.04中安装PostgreSQL(PSQL) - 高级开源数据库管理系统。它也被称为ORDBMS,即对象 - 关系数据库管理系统。...Postgresql(PSQL)的主要开发人员是PostgreSQL全球开发组。该程序以C编程语言使用,最初于1996年在PostgreSQL许可下发布了其第一个版本。...您可以从Github下载PostgreSQL(PSQL)存储库PostGrace(Github)中的开发人员团队设置了一些限制,例如:您的表大小不能超过32 TB,最大字段大小和行大小为1 GB和1.6...按照以下步骤在Ubuntu 18.04中安装PostgreSQL(PSQL) - 高级开源数据库: 在开始安装PostgreSQL(PSQL)之前,让我们使用以下命令更新Ubuntu 18.04的软件包和存储库...createdb linuxidc  这种灵活性为根据需要创建数据库提供了多种途径 如何在Ubuntu 18.04中卸载PostgreSQL(PSQL)?

    2.1K10

    PostgreSQL常用命令

    sudo service postgresql stop 数据库操作 列出所有数据库 \l 显示数据库中有哪些表 \d 显示表table_name的定义情况 \d table_name; \d的具体用法...\d后面可以跟t_pkey(索引信息)和通配符 \d+可以显示更详细的信息 只显示匹配的表:\dt 只显示索引:\di 只显示序列:\ds 只显示视图:\dv 只显示函数:\df 列出所有的schema...:\dn 显示所有的表空间:\db 列出数据库中的所有角色和用户:\du或\dg 显示表的权限分配情况:\dp或\z 创建用户数据库 CREATE DATABASE testdb 连接到用户数据库 \c...执行存储在外部文件中的SQL命令 \i 终端中中执行: psql -f 可以达到同样的效果 显示信息 \echo 用于输出一行信息,比如: \echo hello...得到psql中命令实际执行的SQL 在启动psql的命令行中加-E参数,就可以把psql中各种以\开头的的命令执行的实际SQL打印出来 可以使用命令打开\关闭这个功能: \set ECHO_HIDDEN

    2.1K40

    初探向量数据库pgvector

    查看所有数据库列表 要查看当前数据库中的所有数据库列表,可以使用以下 SQL 命令: \l 在 psql 命令行中执行这个命令会显示所有数据库的列表,包括数据库名、所有者、编码、描述等信息。...执行这个命令后,将会创建一个新的名为 database_name 的数据库。 显示所有表的列表 在 PostgreSQL 中,\d 用于显示数据库对象的信息。...可以通过以下两种方式之一运行它: \d \dt 上面的命令将显示当前数据库中所有表的列表。它显示表名、表类型(例如表、视图等)、拥有者以及其他信息。...查看表结构 在 PostgreSQL 中,\d table_name用于显示数据库表的结构。...然后,我们定义了一个表(vector_table),这个表在数据库中实际已经存在,包含了我们的向量数据。 接着,我们在数据库中插入一个新的矢量,然后查询在这个表中 id 等于 1 的矢量。

    4.1K40

    MySQL约束课堂笔记

    一张表只能有一个字段为主键 3. 主键就是表中记录的唯一标识 2....一对一(了解): * 如:人和身份证 * 分析:一个人只有一个身份证,一个身份证只能对应一个人 2....一对多(多对一): * 如:部门和员工 * 实现方式:在多的一方建立外键,指向一的一方的主键。 2....多对多: * 如:学生和课程 * 实现方式:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键 3....码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码 例如:该表中码为:(学号,课程名称) * 主属性:码属性组中的所有属性

    10710

    如何在CentOS 7上安装和使用PostgreSQL

    在本指南中,我们将演示如何在CentOS 7上安装Postgres并介绍一些使用它的基本方法。...Owner --------+------------+-------+---------- public | playground | table | postgres (1 row) 在表中添加...让我们添加一张幻灯片和一个秋千。我们通过调用我们想要添加的表,命名列然后为每列提供数据来完成此操作。...首先,请记住不应引用列名,但是您输入的列值确实需要引号。 要记住的另一件事是我们不输入equip_id列的值。这是因为只要创建表中的新行,就会自动生成此项。...如果我们发现我们的工作人员使用单独的工具来跟踪维护历史记录,我们可以通过键入以下内容来删除此列: ALTER TABLE playground DROP last_maint; 如何更新表中的数据 我们知道如何向表中添加记录以及如何删除它们

    4.9K11

    PostgreSQL基础(三):PostgreSQL的基础操作

    下面的图是默认的连接方式后面都基于psql的命令行(客户端)去进行操作命令绝对不要去背,需要使用的时候,直接找帮助文档,在psql命令行中,直接注入\help,即可查看到数据库级别的一些命令 \?...逻辑结构图可以看到PGSQL一个数据库中有多个schema,在每个schema下都有自己的相应的库表信息,权限粒度会比MySQL更细一些。...在PGSQL中,权限的管理分为很多多层 server、cluster、tablespace级别:这个级别一般是基于pg_hba.conf去配置 database级别:通过命令级别操作,grant namespace...laozheng用户alter schema laozheng owner to laozheng;-- 将laozheng库下的laozheng的schema中的表的增,改,查权限赋予给laozheng...用户grant select,insert,update on all tables in schema laozheng to laozheng;-- 用postgres用户先构建一张表create

    56220
    领券