sql - 将 PostgreSQL 行号添加到一列
问题描述
我有一个 PostgreSQL 数据库,其中包含以下列:名称、摘要等...
我正在尝试在“名称”列的每行末尾添加一个行号。
例如,我在“名称”列的第一行有名字 Christian,我希望它也能得到这样的行号:Christian-1
我正在使用以下命令插入表:
INSERT INTO people(name, summary)
VALUES ('Christian', 'some summary')
ON CONFLICT ON CONSTRAINT unique_names DO NOTHING;
我应该在这个插入命令中添加什么以包括每一行的编号?
提前感谢您提供的任何帮助。
解决方案
不要将此数据直接放入您的表中。这会污染数据,还有其他方法可以让您获得带有附加 ID 的姓名。
相反,制作这样的视图:
CREATE OR REPLACE VIEW v_people AS
SELECT *, name || '-' || id::text AS name_with_id
FROM people;
无论您在哪里需要name
附加的id
,您现在都可以查询此视图而不是表,并且可以只使用该列name_with_id
。
推荐阅读
- java - 如何使用@Query 在 JPA 中获取自动生成的密钥?
- spring-boot - 在 Cassandra 中迁移数据的最佳方法是什么
- python - Python中的字符串
- node.js - NodeJS Puppeteer 打印的 PDF 是否可以具有 HTML或 Adobe 的超链接等功能以跳转到 PDF 的其他部分?
- python - 打印特定选择的字符串行;Python3
- visual-studio-2017 - Visual Studio 2017:通过代码比较替换 vsdiffmerge 不起作用
- android - 如何使用kotlin在匕首中生成包含@ContributesAndroidInjector的模块?
- spring - Kafka Listener 中的钩子
- java - 如何在 JTable 单元格中显示古吉拉特语文本?
- python - 执行 os.popen(...) 时出现 ValueError