我有兩個表,如果表2與表1相比具有最高值,我希望它存儲在臨時表中。比較兩個表並將一些值存儲在臨時表中
Table 1 Table 2 Fruits Value Fruits Value Apple 5 Apple 7 Orange 10 Orange 4 Grapes 2 Grapes 6
因此,值爲7和6的蘋果和葡萄將被存儲到臨時表中。我不知道該怎麼做。
我有兩個表,如果表2與表1相比具有最高值,我希望它存儲在臨時表中。比較兩個表並將一些值存儲在臨時表中
Table 1 Table 2 Fruits Value Fruits Value Apple 5 Apple 7 Orange 10 Orange 4 Grapes 2 Grapes 6
因此,值爲7和6的蘋果和葡萄將被存儲到臨時表中。我不知道該怎麼做。
您可以使用下面的查詢得到的結果:
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
如果我這樣做是正確,要合併兩個表來臨時表。它可以通過單個查詢完成。
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
部分查詢。
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
請編輯您的答案以包含一些解釋。僅有代碼的答案對未來SO讀者的教育很少。您的回答是在低質量的審覈隊列中。 – mickmackusa
SELECT t2.fruits, t2.value FROM'table2'爲t2 LEFT JOIN表1爲t1 ON t1.id = t2.id WHERE t1.value
不要用評論來解釋你的答案。請編輯您的答案並刪除您的評論。 – mickmackusa
告訴我們你到目前爲止做了什麼 – Borjante
添加您的示例代碼直到現在。 –