我有两个表,如果表2与表1相比具有最高值,我希望它存储在临时表中。
Table 1 Table 2 Fruits Value Fruits Value Apple 5 Apple 7 Orange 10 Orange 4 Grapes 2 Grapes 6
因此,值为7和6的苹果和葡萄将被存储到临时表中。我不知道该怎么做。
答案 0 :(得分:0)
您可以使用以下查询来获得结果:
SELECT table2.fruits, table2.value
FROM table1 INNER JOIN table2
ON table1.fruits = table2.fruits AND table1.value < table2.value
您还可以创建一个表格,其中包含两个表格中具有最高值的所有水果:
SELECT fruits, MAX(value) FROM (
SELECT fruits, value FROM table1
UNION
SELECT fruits, value FROM table2
)x GROUP BY fruits
要将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