gpt4 book ai didi

mysql - 在不存在的地方插入——无主键

转载 作者:IT王子 更新时间:2023-10-29 00:38:06 24 4
gpt4 key购买 nike

我有 3 个表:牙医、组和 groupdentlink。许多牙医通过 groupdentlink 表链接到许多组。

所以我正在尝试进行查询,它将行插入 groupdentlink(将该州的所有牙医与该州的所有组联系起来),但前提是这些行不存在。简而言之,我想添加新行而不覆盖现有行或复制它们。

所以查询的 intent 类似于:

INSERT INTO groupdentlink (f_dent_id, f_group_id, f_schedule_id)
VALUES ('$_POST[id]', '$groupid', '$scheduleid')
WHERE NOT EXISTS ('$_POST[id]', '$groupid')

而且我在 groupdentlink 表中没有任何主键。

提前谢谢你!

最佳答案

如果您真的想编写自己的(工作)查询..


INSERT INTO groupdentlink (
f_dent_id, f_group_id, f_schedule_id
) SELECT
'$_POST[id]' f_dent_id,
'$groupid' f_group_id,
'$scheduleid' f_schedule_id
FROM DUAL
WHERE NOT EXISTS (
SELECT 1
FROM `groupdentlink`
WHERE
f_dent_id = '$_POST[id]' AND f_group_id = '$groupid'
LIMIT 1 -- will stop mysql to stop searching after first match
)

...但 MySQL 可以为您处理这一切!


你不需要主键来让 MySQL 为你处理这个,你应该在两列的组合集上添加一个 UNIQUE 键约束。

查询将唯一键 dent_group_uniq_key 添加到 groupdentlink

ALTER TABLE groupdentlink ADD UNIQUE KEY `dent_group_uniq_key` (
f_dent_id, f_group_id
);

然后在您的查询中使用INSERT IGNORE:

INSERT IGNORE INTO groupdentlink (
f_dent_id, f_group_id, f_schedule_id
) VALUES (
'$_POST[id]', '$groupid', '$scheduleid'
)

INSERT IGNORE 将尝试向您的表中插入一行,如果由于键约束而失败,它将像什么都没发生一样。

关于mysql - 在不存在的地方插入——无主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8525333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com