J'ai deux tables et si la table 2 a la valeur la plus élevée par rapport à la table 1, je veux qu'elle soit stockée dans une table temporaire.

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

Ainsi, les pommes et les raisins avec les valeurs 7 et 6 seront stockés dans une table temporaire. Je ne sais pas comment faire.

0
Newbieprog 20 avril 2017 à 09:31

3 réponses

Meilleure réponse

Vous pouvez utiliser la requête suivante pour obtenir le résultat:

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

Démo: http://sqlfiddle.com/#!9 / 346e5 / 1/0

Vous pouvez également créer une table avec tous les fruits avec leurs valeurs les plus élevées des deux tables:

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

Démo: http://sqlfiddle.com/#!9 / 346e5 / 3/0

Pour INSERT les données dans une table temporaire, vous pouvez utiliser ce qui suit:

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
Sebastian Brosch 20 avril 2017 à 06:54

Si j'ai bien compris, vous souhaitez fusionner deux tables en table temporaire. Cela peut être fait par une seule requête.

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

Si des éléments existants doivent être remplacés, vous pouvez utiliser INSERT OR REPLACE. Si vous voulez simplement obtenir le résultat, utilisez uniquement SELECT une partie de la requête.

0
Jirka Picek 20 avril 2017 à 06:55
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 
0
MD.Mahedi hasan 21 avril 2017 à 09:41