MySql的更新,其中table_A.col_1 table_B.col_1和table_B.col_2

问题描述:

之间

你能帮我一个SQL查询?MySql的更新,其中table_A.col_1 table_B.col_1和table_B.col_2

我想从另一个表中的值,但不能使用内部联接,因为“加入”列不正是这两个表中相同。相反,我必须检查,其中“Table_A.clubZipCode之间Table_B.zip_min和Table_B.zip_max”持有的地方。

这是我研究efford至今:

UPDATE 
    Table_A 
SET 
    Table_A.clubState = Table_B.state 
FROM 
    clubs_data AS Table_A 
    JOIN zip_to_state AS Table_B 
WHERE 
    Table_A.clubZipCode BETWEEN Table_B.zip_min AND Table_B.zip_max 

然而,第5行 绘制一个语法错误,谢谢!

这是您的查询重新写有一个有效的语法:

UPDATE clubs_data 
SET clubState = (
        SELECT state 
        FROM zip_to_state 
        WHERE clubs_data.clubZipCode >= zip_to_state.zip_min AND clubZipCode <= zip_to_state.zip_max 
        LIMIT 1 
       ); 

我不知道你想达到的目标,但一般使用JOIN更新语法将是这样的:

UPDATE clubs_data AS Table_A 

JOIN zip_to_state AS Table_B 
    ON Table_A.clubZipCode >= Table_B.zip_min 
    AND Table_A.clubZipCode <= Table_B.zip_max 

SET Table_A.clubState = Table_B.state; 

编辑:使用子查询可能更适合The solution just proposed by @Gab您在本案件。

+0

谢谢反正。很高兴知道未来查询的正确语法。 –