你好,任何想对此咬牙切齿的人,
我遇到了多个示例,说明如何将子查询选择的结果集使用到另一个表中。然而,我所拥有的是:
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
并klant_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'