我有一张桌子叫map_tags:

map_id | map_license | map_desc

以及另一个表(widgets),其记录包含对map_tags记录的外键引用(1到1):

widget_id | map_id | widget_name

考虑到所有map_license都是唯一的(但不是设置为map_tags上的键),如果我有map_licensewidget_name,我想在同一个SQL语句中对widgets执行insert:

INSERT INTO
    widgets w
(
    map_id,
    widget_name
)
VALUES (
    (
        SELECT
            mt.map_id
        FROM
            map_tags mt
        WHERE
            // This should work and return a single record because map_license is unique
            mt.map_license = '12345'
    ),
    'Bupo'
)

believe我在正确的轨道上,但我知道这是不正确的SQL为博士后.有人知道实现这种单一查询的正确方法吗?

推荐答案

INSERT INTO widgets
(
    map_id,
    widget_name
)
SELECT
    mt.map_id, 'Bupo'
FROM
    map_tags mt
WHERE
    mt.map_license = '12345'

Postgresql相关问答推荐

PostgreSQL:函数结果表内冲突(...)上的";中的字段名称

Postgis超过2个表的查询在运行时爆炸

气流数据库如何定期管理?

PostgreSQL unnest 与空数组

PostgreSQL错误致命:角色 username不存在

try 访问本地主机中的数据库时如何解决Error: The server does not support SSL connections?

PostgreSQL 中的 DATEADD 等效项

Nodemon - 安装期间clean exit - waiting for changes before restart

postgreSQL 将列数据类型更改为没有时区的时间戳

Flask-SQLAlchemy db.session.query(Model) 与 Model.query

无法使用 sequelize 从本地 node 应用程序连接到 heroku postgresql 数据库

安装时 postgres 的默认用户

为 postgresql 存储过程设置隔离级别

防止 CHARACTER VARYING 字段中出现空字符串

try 为 ror 应用程序设置 postgres,出现错误 - fe_sendauth:no password supplied

Postgres 数据库文件保存在 ubuntu 中的什么位置?

如何将 Heroku PG 转储导入本地机器

实时监控 PostgreSQL 查询的应用程序?

重命名 Amazon RDS 主用户名

如何为 Postgresql 中的所有数据库创建具有只读权限的用户?