【发布时间】:2022-10-18 21:23:17
【问题描述】:
我有一组很长的数据,如果数据存在或不存在,应该插入(或更新)这些数据。
我走了这么远,但不知道我是否走在正确的轨道上。也许一些 MySQL 专家知道如何完成该语句或更正它。
我有两张桌子:
领域
| id | number | name |
|---|---|---|
| 1 | 4578 | FirstArea |
| 2 | 4328 | SomeArea |
| 3 | 3214 | SecondArea |
顾客
| id | first_name | last_name | identifier | area_id |
|---|---|---|---|---|
| 1 | James | Jameson | HJ238 | 1 |
| 2 | Pepper | Potts | NULL | NULL |
| 3 | Peter | Parker | NULL | 2 |
| 4 | Anis | Abraham | NULL | NULL |
| 5 | Karl | Klux | HI438 | NULL |
我想用客户数据插入或更新表Customers。到目前为止,我已经做到了:
set @last_name="James", @first_name="Jameson", @identifier="HZ732732", @cc="FirstArea";
set @last_name="Abraham", @first_name="Anis", @identifier="JI72373", @cc="SecondArea;
set @last_name="Potts", @first_name="Pepper", @identifier="KI83282", @cc="SomeArea;
set @id = (SELECT id from Customers c WHERE c.first_name = @first_name AND e.last_name = @last_name;);
set @cc_id = (SELECT id FROM Areas a WHERE aa.number = @cc;);
INSERT INTO Customers c (id, first_name, last_name, identifier, area_id) values (@id, @first_name, @last_name, @identifier, @cc_id)
ON DUPLICATE key UPDATE e.identifier = @identifier, e.area_id = @cc_id;
在这里提琴:http://www.sqlfiddle.com/#!9/cb988e
对于循环部分,我不知道,如果这与变量一起工作,我不确定。
我不仅有三个条目,而且大约有 3 个条目。要插入 450 个条目。
【问题讨论】:
-
Tips for asking a good Structured Query Language (SQL) question,尤其是“5. 一些其他建议”和“C. 考虑提供 SQL Fiddle 或 DB Fiddle”。还为提供的源数据和文件内容提供“我在单独文件中的客户数据”内容(2-3 行,代码格式)和所需的最终数据状态。
-
这是小提琴(也在问题中添加):sqlfiddle.com/#!9/cb988e
-
好吧,现在请阅读我评论中的第二句话并提供相应的信息。
-
抱歉,我认为这句话具有误导性。 “在单独文件中”的数据是我写下的前三行
set(以及另外 450 个条目)。条目的格式也相同,三个集合条目的格式相同。 -
“在单独文件中”的数据是我写下的前三个集合行(以及另外 450 个条目)。??您的意思是您的文件包含不明确的数据,但显示了现成的 SQL 代码?
标签: mysql loops sql-update sql-insert upsert