mysql - 使用 like 和 concat 更新列

标签 mysql

我有 2 个表:animal 和 espece(fr='species')。 在动物中,我有一个名为 espece_id 的列,我想在其中使用 espece.id (主键)填充数据,我尝试这样做:

UPDATE animal
SET espece_id = espece.id
WHERE espece LIKE concat('%', espece.name, '%');

表格详细信息:

animal: id, espece, espece_id
espece: id, name, scientific_name

animal.especeespece.name 在某种程度上等于:“dog”“欧亚牧羊犬”,所以这就是为什么我尝试在此使用 LIKE更新,但它给出了:

Error Code: 1054. Unknown column 'espece.name' in 'where clause'

我做错了什么?

最佳答案

您需要加入:

UPDATE animal AS a
JOIN espece AS e ON a.espece LIKE concat('%', e.name, '%')
SET a.espece_id = e.id

关于mysql - 使用 like 和 concat 更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24238358/

相关文章:

mySQL max() 不返回最大结果

mysql - 如何像抽象java父类(super class)对象一样设计SQL表?

PHP 表单处理未发送正确的电子邮件

php - 特定字符是否可以使用 LOAD DATA LOCAL INFILE 停止数据插入?

mysql - 更新 WHERE Field IN

mysql - 在 Rails 中添加多条记录

php - 每次加载时自动执行搜索查询,无需点击搜索按钮

php - array_search 返回 NULL

MySQL 无法写入文件,权限被拒绝。 (错误 13)

mysql - 需要帮助编写高效的 SQL 查询