如何用表中的值更新表列?

时间:2019-04-07 22:13:15

标签: mysql sql

我需要更新一列,其中一些单元格已满,有些单元格为空白。 我有这样的代码,它不起作用。

d.setHours(d.getHours() - 5)

2 个答案:

答案 0 :(得分:2)

这是正确的语法:

UPDATE table_name t1 
INNER JOIN (select distinct progID, type_name from table_name where type_name <>'') t2 
ON t1.progID = t2.progID 
SET t1.type_name = t2.type_name
WHERE t1.type_name <> ''

您不需要FROM子句。
但是您确定要更新具有值的type_name列吗?
也许将最后一个条件更改为:

WHERE t1.type_name IS NULL

答案 1 :(得分:0)

我会在子查询中使用select distinct保持警惕,因为您仍然可以获取重复项。只需使用group by,就可以保证子查询每个ProgId仅生成一行:

UPDATE table_name t JOIN
       (SELECT progID, MAX(type_name) as type_name
        FROM table_name 
        WHERE type_name <> ''
        GROUP BY progID
       ) tt
       ON t.progID = tt.progID
    SET t.type_name = tt.type_name
FROM table_name t1
WHERE t1.type_name <> '';