将一个表的项目搜索到另一个表中以保存结果

时间:2017-05-23 00:31:28

标签: mysql sql

我有两张桌子:

Table 1

+--------+-----+-----+  
| name   | id1 | id2 |   
+--------+-----+-----+    
| luis   | 1   | 1.2 |  
+--------+-----+-----+   
| carlos | 2   | 1.3 |  
+--------+-----+-----+  
| george | 3   | 1.5 |  
+--------+-----+-----+   

Table 2

+--------+-----+-----+  
| points | id1 | id2 |  
+--------+-----+-----+   
| 100    | 1   | 1.2 |  
+--------+-----+-----+   
| 50     | 6   | 2   |   
+--------+-----+-----+   
| 48     | 3   | 1.5 |   
+--------+-----+-----+   

我希望在两个表中id1和id2相等时搜索所有情况,并将第二个表的记录保存为新表。

对于这种情况,它将是:

Table 3

+--------+-----+-----+   
| points | id1 | id2 |   
+--------+-----+-----+   
| 100    | 1   | 1.2 |        
+--------+-----+-----+   
| 48     | 3   | 1.5 |       
+--------+-----+-----+   

5 个答案:

答案 0 :(得分:2)

您可以使用exists或内部联接来执行此操作。 插入table3(points,id1,id2) 选择点,id1,id2 来自table2 t2 where存在(从table1 t1中选择1,其中t1.id1 = t2.id1和t1.id2 = t2.id2)

答案 1 :(得分:1)

您可以使用CREATE TABLE ... AS SELECT ...语法和JOIN table1以及table2id1id2

CREATE TABLE Table3 AS
SELECT Table2.*
FROM Table2
JOIN Table1
ON Table2.id1 = Table1.id1
AND Table2.id2 = Table2.id2;

SqlFiddle Demo Here

答案 2 :(得分:1)

CREATE TABLE table3 AS
 SELECT table1.points, table1.id1, table2.id2
 FROM table1 INNER JOIN table2 ON table1.id1 = table2.id1 AND table1.id2 = table2.id2;

答案 3 :(得分:1)

使用exists有点多,但它有效。对于你所要求的,只需INNER JOIN这两个表就会简单得多。

INSERT INTO `table3` (points, id1, id2)  
SELECT bar.points, bar.id1, bar.id2 
FROM bar 
INNER JOIN foo ON bar.id1 = foo.id1
  AND bar.id2 = foo.id2
;

http://sqlfiddle.com/#!9/424ede/1

答案 4 :(得分:0)

使用SQL INSERT INTO SELECT语句和LEFT JOIN:从table2获取相应的详细信息,其中id1id2对应table1中的值{1}},并将它们插入第三个表格(table3):

INSERT INTO table3 AS t3 (points, id1, id2)
SELECT 
    t2.points,
    t2.id1,
    t2.id2
FROM table2 AS t2
LEFT JOIN table1 AS t1 ON (t1.id1 = t2.id1 AND t1.id2 = t2.id2);