MySQL Update基于另一个表中的查询

时间:2018-10-25 15:06:54

标签: mysql

我想用另一个表中的查询更新一个表。

我想从两个表的组合中获取混合信息。 然后使用它们更新两个表之一。

这是我所做的:

UPDATE commande as C,
    (
        SELECT CONCAT (input_hauteur_sous_collecteur, ' x ', input_largeur_hors_tout, ' x ', input_epaisseur, ' - ', input_pas_ailettes) 
        AS 'ligne_sage'
        FROM commande as C, faisceaux_ta as F 
        WHERE C.commande_type_faisceaux = 'TA' 
        AND C.commande_id_faisceaux = F.id 
    ) AS src
SET
    C.ligne_sage = src.ligne_sage
WHERE
    C.commande_type_faisceaux = "TA"

/ *并且我让MySQL运行命令,并且在没有错误通知的情况下永远不会结束... * /

EDIT:实际上,它最终可以在5分钟以上的时间内工作,问题是我在每行中具有相同的值(SELECT结果表的第一行)...

我该怎么做才能使其正常工作? (SELECT CONCAT子查询正常运行)

1 个答案:

答案 0 :(得分:0)

之所以这样,是因为您没有在表之间过滤结果。您需要在where子句中添加和过滤。有点像(请参阅最后一行)。我没有你的桌子defs:-(

    UPDATE commande as C,
        (
            SELECT CONCAT (input_hauteur_sous_collecteur, ' x ', input_largeur_hors_tout, ' x ', input_epaisseur, ' - ', input_pas_ailettes) 
            AS 'ligne_sage'
            FROM commande as C, faisceaux_ta as F 
            WHERE C.commande_type_faisceaux = 'TA' 
            AND C.commande_id_faisceaux = F.id 
        ) AS src
    SET
        C.ligne_sage = src.ligne_sage
    WHERE
        C.commande_type_faisceaux = "TA"

        AND c.commandId = src.commandId