2017-04-20 43 views
0

我有兩個表,如果表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

告訴我們你到目前爲止做了什麼 – Borjante

+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 
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部分查詢。

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 
+1

請編輯您的答案以包含一些解釋。僅有代碼的答案對未來SO讀者的教育很少。您的回答是在低質量的審覈隊列中。 – mickmackusa

+0

SELECT t2.fruits, t2.value FROM'table2'爲t2 LEFT JOIN表1爲t1 ON t1.id = t2.id WHERE t1.value

+1

不要用評論來解釋你的答案。請編輯您的答案並刪除您的評論。 – mickmackusa

相關問題