比较两个表并将一些值存储在临时表中

时间:2017-04-20 06:31:25

标签: mysql

我有两个表,如果表2与表1相比具有最高值,我希望它存储在临时表中。

Table 1           Table 2
Fruits    Value   Fruits    Value
Apple      5      Apple       7
Orange     10     Orange      4
Grapes     2      Grapes      6

因此,值为7和6的苹果和葡萄将被存储到临时表中。我不知道该怎么做。

3 个答案:

答案 0 :(得分:0)

您可以使用以下查询来获得结果:

SELECT table2.fruits, table2.value 
FROM table1 INNER JOIN table2 
    ON table1.fruits = table2.fruits AND table1.value < table2.value
  

演示: http://sqlfiddle.com/#!9/346e5/1/0

您还可以创建一个表格,其中包含两个表格中具有最高值的所有水果:

SELECT fruits, MAX(value) FROM (
    SELECT fruits, value FROM table1
    UNION 
    SELECT fruits, value FROM table2
)x GROUP BY fruits
  

演示: http://sqlfiddle.com/#!9/346e5/3/0

要将INSERT数据放入临时表,您可以使用以下内容:

CREATE TEMPORARY TABLE tmp_table3 (
    `fruits` VARCHAR(10),
    `value` INT
);

INSERT INTO tmp_table3 (`fruits`, `value`)
SELECT table2.fruits, table2.value 
FROM table1 INNER JOIN table2 
    ON table1.fruits = table2.fruits AND table1.value < table2.value

答案 1 :(得分:0)

如果我做对了,你想把两个表合并到临时表。它可以通过单个查询来完成。

INSERT INTO tmp_table SELECT `Name`, MAX(`Val`) FROM (SELECT `Name`, `Val` FROM table1 UNION SELECT `Name`, `Val` FROM table2) GROUP BY `Name`;

如果应替换现有项目,则可以使用INSERT OR REPLACE。如果您只想获得结果,请仅使用SELECT部分查询。

答案 2 :(得分:0)

INSERT INTO `temp`(`fruits`, `value`) SELECT 
  t2.fruits,
  t2.value
FROM `table2` as t2
LEFT JOIN table1 as t1 ON t1.id=t2.id
WHERE t1.value < t2.value