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


MYSQL insert into single table using the results of two different tables

你好,任何想对此咬牙切齿的人,

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

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,但我将在代码的另一部分截获它。

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

所以简而言之:我如何bedrijfs_idklant_id到相应的klant_bedrijf_machtiging列中,同时我自己仍然能够在 1 个查询中操作最后一列machtiging

好消息!MySQL有一个简单的方法来做到这一点:MySQL插入到w/选择

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

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,我不确定您将如何在一个查询中做到这一点而不会弄得一团糟。

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')
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'
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'