MySQL插入值和一些从其他表中选择的值

时间:2014-01-06 08:08:16

标签: mysql sql

我有3张桌子

  • 有效(id,name,date_started,date_finished,type_id,employer_id)
  • types(id,type)
  • 雇主(id,name,last_name,company)

我想在一个查询中插入工作表记录时插入到列中:name,date(手工),然后也是type_id和employer_id列(从其他表中选择id)

我知道你可以插入然后使用select,但是我如何添加其他值,我需要手工输入,因为它们在其他表上不存在?

2 个答案:

答案 0 :(得分:3)

您可以直接将额外值放在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 ...

答案 1 :(得分: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)
)