1

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

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

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_id,同时我自己仍然能够在 1 个查询中操作最后一列。klant_idklant_bedrijf_machtigingmachtiging

4

4 回答 4

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

于 2012-06-18T15:17:46.227 回答
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')
于 2012-06-18T15:18:26.680 回答
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'
于 2012-06-18T15:17:24.403 回答
-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'
于 2016-01-08T05:25:34.523 回答