gpt4 book ai didi

mysql - 如果不存在则多个插入行(基于多列)

转载 作者:行者123 更新时间:2023-11-29 12:44:33 25 4
gpt4 key购买 nike

想象一个包含数据的现有表(名称是不言自明的):

id姓名电话_1电话_2

我想用一个INSERT插入多个新记录(希望用一个插入插入多个新记录 - 如果这是一个问题,我可以回退到逐一插入),但我想要一个仅当新记录的 telephone_1telephone_2 尚不存在于 telephone_1 中时才添加新行> 或现有记录的 telehpone_2

这意味着如果我们有现有数据

1,吉米,123, 456

我不应该添加

NULL,约翰,444,123

因为约翰的 telephone_2 已经作为吉米的 telephone_1 存在。

我打算让 mysql 代替我的程序来完成繁重的工作,但我该怎么做呢?我过去使用 UNIQUE 索引做过类似的事情,但本例中的问题是列为 2。telephone_1 不应与 telephone_1< 冲突 并且不应与 telephone_2 碰撞(telephone_2 也是如此)

更新澄清:我尝试插入的数据不是来自另一个表;它们是从我的程序中动态生成的。

最佳答案

假设您的表名为contacts,然后尝试插入记录:

INSERT INTO contacts(name,telephone_1,telephone_2)
SELECT 'John', 444, 123
FROM contacts
WHERE telephone_1 NOT IN (444, 123)
AND telephone_2 NOT IN (444, 123)
LIMIT 1;

这里有一个技巧:如果 WHERE 条件为 false,则 SELECT 不会返回任何行,并且不会插入记录。

在这里试试:http://sqlfiddle.com/#!2/5a6e0/1

关于mysql - 如果不存在则多个插入行(基于多列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25620373/

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