MYSQL使用两个不同表的结果插入到单个表中

时间:2012-06-18 15:10:26

标签: php mysql insert myisam

对于想要咬牙切齿的人,你好,

我遇到了如何将子查询结果集选择到另一个表中的多个示例。 然而,我有:

SELECT `klanten_zakelijk`.`bedrijfs_id`, `klanten`.`klant_id` 
    FROM `klanten`,`klanten_zakelijk`
    WHERE `klanten`.`emailadres` = '$email' 
    AND `klanten_zakelijk`.`bedrijfs_kvk`='$kvknr'

如您所见,我从两个不同的表中获取结果,需要将它们移植到另一个表中。

我希望将这些值插入表klant_bedrijf_machtiging

INSERT INTO `klant_bedrijf_machtiging` (`klant_id`, `bedrijfs_id`, `machtiging`) VALUES ('8501', '1', '3');

machtiging是标准3,带有插入,但如果公司已经存在,我需要能够将其更改为1,但我会在代码的另一部分拦截它。

我看到的所有示例都只是将一个表导入到anther表中的结果。 从两个表中获取结果时是否适用相同的逻辑?如果是这样,那么实现这一目标的最明智和最有效的方法是什么?

所以要简短提问: 如何将bedrijfs_idklant_id放入klant_bedrijf_machtiging的相应列中,同时仍然可以在一次查询中操作最后一列machtiging

4 个答案:

答案 0 :(得分:3)

好消息! MySQL有一种简单的方法:MySQL Insert Into w/ Select

所以在你的情况下,它将是:

INSERT INTO klant_bedrijf_machtiging (`klant_id`, `bedrijfs_id`, `machtiging`)
SELECT `klanten`.`klant_id`, `klanten_zakelijk`.`bedrijfs_id`, 3
    FROM `klanten`,`klanten_zakelijk`
    WHERE `klanten`.`emailadres` = '$email' 
    AND `klanten_zakelijk`.`bedrijfs_kvk`='$kvknr'

至于将项目更改为1,如果它已经存在,我不确定如何在一个查询中执行该操作而不会造成大量混乱。

答案 1 :(得分:1)

INSERT INTO `klant_bedrijf_machtiging` (`klant_id`, `bedrijfs_id`, `machtiging`)
(SELECT `klanten`.`klant_id`, `klanten_zakelijk`.`bedrijfs_id`, 3
FROM `klanten`,`klanten_zakelijk`
WHERE `klanten`.`emailadres` = '$email'
AND `klanten_zakelijk`.`bedrijfs_kvk`='$kvknr')

答案 2 :(得分:0)

INSERT INTO yourtable (fields) SELECT `klanten_zakelijk`.`bedrijfs_id`, `klanten`.`klant_id` 
    FROM `klanten`,`klanten_zakelijk`
    WHERE `klanten`.`emailadres` = '$email' 
    AND `klanten_zakelijk`.`bedrijfs_kvk`='$kvknr'

答案 3 :(得分:-1)

INSERT INTO klant_bedrijf_machtiging (`klant_id`, `bedrijfs_id`, `machtiging`)
SELECT `klanten`.`klant_id`, `klanten_zakelijk`.`bedrijfs_id`, 3
    FROM `klanten`,`klanten_zakelijk`
    WHERE `klanten`.`emailadres` = '$email' 
    AND `klanten_zakelijk`.`bedrijfs_kvk`='$kvknr'