Mysql 如何通过连接其他表插入到一个表中?

Mysql 如何通过连接其他表插入到一个表中?,mysql,Mysql,我有两张桌子: table1 id | mcc | mnc | active | client_id 1 202 05 1 4 2 202 06 0 4 .......a lot table2 id | mcc | mnc | rejectReason 1 202 05 null 2 202 06 null 需要插入到表2中,但需要检查表1的每个项目,以便插入表2,如下所

我有两张桌子:

table1
id | mcc | mnc | active | client_id
1    202   05      1        4
2    202   06      0        4 
.......a lot

table2
id | mcc | mnc | rejectReason
1    202   05         null
2    202   06         null
需要插入到表2中,但需要检查表1的每个项目,以便插入表2,如下所示:

 SELECT table1 t1

(CASE WHEN t2.id != 0
THEN
  INSERT INTO table2 t22
  SET (
       t22.rejectReason = CONCAT('LOSS OF COVERAGE'),
       t22.mcc = t1.mcc,
       t22.mnc = t1.mnc,
  )
 WHERE t22.mcc     = t1.mcc
 AND   t22.mnc     = t1.mnc
 ELSE
   ''
END)

 LEFT JOIN table2 t2
 ON  t2.mcc       = t1.mcc
 AND t2.mnc       = t1.mnc
如果表1没有表2那样的项目(mcc/mnc),则插入表2的当前项目。请帮忙

RESULT:
表1
id | mcc |跨国公司|活跃|客户| id
1    202   05      1        4
2    202   06      0        4 
3    214    0      1        5
.....
212 16//不存在
214 07//不存在
很多
表2
id | mcc | mnc |拒绝原因
120205零
2 202 06零
3 212 16保险损失//然后插入

4 214 07保险损失//然后插入
好吧,我不太明白你想要什么,但这里有一个结构,它应该是怎样的,根据你的意思调整它:

UPDATE table2 t2
LEFT JOIN table1 t1
 ON(t1.mcc = t2.mcc and t1.mnc = t2.mnc)
SET t2.rejectReason = 'LOSS OF COVERAGE'
WHERE t1.id is null
当表1中没有相同的
mcc、mnc
记录时,这将更新
t2.rejectReason
为“保险损失”。顺便说一句,
CONCAT()
用于合并多个字符串,您也有一个字符串,因此不需要它

编辑:如果需要插入,则:

INSERT INTO table2
SELECT t.id,t.mcc,t.mnc,'LOSS OF COVERAGE'
FROM Table1 t
WHERE NOT EXISTS(SELECT 1 from table2 s
                 WHERE t.mcc = s.mcc and t.mnc = s.mnc)
EDIT2:我不知道这个错误,所以也许可以更容易地解决,但您可以这样做:

CREATE TABLE Temp_Tbl AS
(SELECT t.id,t.mcc,t.mnc,'LOSS OF COVERAGE'
FROM Table1 t
WHERE NOT EXISTS(SELECT 1 from table2 s
                 WHERE t.mcc = s.mcc and t.mnc = s.mnc));

INSERT INTO Table2
SELECT * FROM Temp_Tbl;

DROP TABLE Temp_Tbl;

你到底想发生什么?请提供预期的输出。我添加了结果,我需要的是我想我得到了错误:MySQL文档说:“在同一个查询中,您不能多次引用临时表。”| Earler:CREATE TEMPORARY table newData ENGINE=MEMORY AS(…)@axon我认为它已经修复,现在:)