连表执行更新数据时报错 1292 - Truncated incorrect DOUBLE value: 'admin'

UPDATE report_for_repair r
LEFT JOIN users u ON r.user_id = u.username 
SET r.user_id = u.id 
WHERE
    r.id >= 2950 
    AND u.id IS NOT NULL;

经查询发现是 users 表的 username 字段包含字母,需要把 users 表的带字母的全部排除掉,再进行连表查询

UPDATE report_for_repair r
LEFT JOIN users u ON r.user_id = u.username 
SET r.user_id = u.id 
WHERE
    r.id >= 2950 
--     u.username 全部为数字,可以使用正则表达式
    AND u.username regexp '^[0-9]+$'
    AND u.id IS NOT NULL;

标签: mysql, sql