如果没有 IP 地址,以下查询将插入 IP 地址并返回 ID。
WITH variables AS (
SELECT '1.1.1.2'::inet AS ip
)
INSERT INTO globals.ips (ip)
SELECT v.ip
FROM variables AS v
WHERE NOT EXISTS (
SELECT i.global_ip_id
FROM globals.ips AS i
WHERE i.ip = v.ip
)
RETURNING global_ip_id
但是,当该值已存在于数据库中时,它不会返回 ID。
当值已经存在时,如何获取 ID?
我正在运行 PostgreSQL 12。
最佳答案
WITH variables AS (
SELECT '1.1.1.2'::inet AS ip
), wt0 as (
INSERT INTO globals.ips (ip)
SELECT v.ip
FROM variables AS v
WHERE NOT EXISTS (
SELECT i.global_ip_id
FROM globals.ips AS i
WHERE i.ip = v.ip
)
RETURNING global_ip_id
)
SELECT global_ip_id FROM wt0
UNION
SELECT id FROM globals.ips WHERE ip = 'SOMETHING';
https://stackoverflow.com/questions/63817389/
相关文章:
vim - Coc-Prettier 没有获取项目或家庭配置
amazon-web-services - 如何在本地运行和测试Cloud-init?
javascript - Chart JS Annotations Plugin - 你能创建一个工
javascript - 使用 Typescript 允许 React 组件上的任意数据-* 属性
asp.net-core - 客户端中的 IdentityServer 4 身份验证事件
javascript - Sonarqube 不显示安全热点
reactjs - 测试套装因 "SyntaxError: Unexpected token ' e
python - 使用 Enterprise Architect Python API 旋转标签