Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL插入值,并从其他表中选择一些值_Mysql_Sql - Fatal编程技术网

MySQL插入值,并从其他表中选择一些值

MySQL插入值,并从其他表中选择一些值,mysql,sql,Mysql,Sql,我有三张桌子 工程(id、名称、开工日期、完工日期、类型id、雇主id) 类型(id、类型) 雇主(id、姓名、姓氏、公司) 在一个查询中将记录插入works表时,我希望插入到列中:name、date(手动),然后也插入type_id和employer_id列(从其他表中选择id) 我知道您可以先插入,然后使用select,但是如何添加其他需要手动键入的值,因为它们不存在于其他表中?您可以直接将额外的值放入select子句中: INSERT INTO works (name, date_st

我有三张桌子

  • 工程(id、名称、开工日期、完工日期、类型id、雇主id)
  • 类型(id、类型)
  • 雇主(id、姓名、姓氏、公司)
在一个查询中将记录插入works表时,我希望插入到列中:name、date(手动),然后也插入type_id和employer_id列(从其他表中选择id)


我知道您可以先插入,然后使用select,但是如何添加其他需要手动键入的值,因为它们不存在于其他表中?

您可以直接将额外的值放入
select
子句中:

INSERT INTO works (name, date_started, type_id, employer_id)
SELECT name, curdate(), type_id, employer_id
FROM types t
JOIN employers e ON ...
WHERE ...

您可以直接将额外的值放入
SELECT
子句中:

INSERT INTO works (name, date_started, type_id, employer_id)
SELECT name, curdate(), type_id, employer_id
FROM types t
JOIN employers e ON ...
WHERE ...

如果子查询只返回一个值,则可以在
VALUES()
子句中使用子查询

INSERT INTO works (name, date_started, date_finished, type_id, employer_id)
VALUES
(
    'name here',
    'date started',
    'date finished',
    (SELECT id FROM types WHERE type = 'val' LIMIT 1),
    (SELECT id FROM employers WHERE name = 'val' LIMIT 1)
)

如果子查询只返回一个值,则可以在
VALUES()
子句中使用子查询

INSERT INTO works (name, date_started, date_finished, type_id, employer_id)
VALUES
(
    'name here',
    'date started',
    'date finished',
    (SELECT id FROM types WHERE type = 'val' LIMIT 1),
    (SELECT id FROM employers WHERE name = 'val' LIMIT 1)
)

示例记录是?示例记录是?