【问题标题】:Update Select with where & CONCAT issue使用 where 和 CONCAT 问题更新 Select
【发布时间】:2018-01-02 21:26:26
【问题描述】:

我试图在连接两列后用另一个表数据更新一个表它显示错误。

错误代码:1064。您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 语法

表 1:订单 表 2:用户

我正在尝试通过将字段与订单表中的user_id 进行比较来更新订单表字段name

user_id 链接到用户表。我正在尝试连接 first_namelast_name 并更新订单表中的 name

UPDATE orders SET 
(name =
SELECT CONCAT(u.first_name, ' ', u.last_name) as full_name
FROM users u
WHERE u.first_name IS NOT NULL OR u.first_name <> '' );

条件是这样的。

如果订单表中的user_id 中存在任何ID,则应检查users tableid 并选择& concat first_name & last_name 并更新订单表。

如果订单表中没有user_id,则该字段应更新为NONE

通过 Query 来完成对我来说很复杂。我可以在 PHP 中做到这一点,但不推荐。有人可以帮忙吗?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    假设您在 orders 表上有一个 user_id 列要加入,您可以试试这个:

    UPDATE orders o SET o.name = 
       IFNULL((SELECT CONCAT(u.first_name, ' ', u.last_name) AS full_name 
               FROM users u 
               WHERE u.user_id = o.user_id 
               AND u.first_name IS NOT NULL 
               AND u.first_name <> ''), 'NONE');
    

    【讨论】:

    • 错误代码:1054。'where 子句'中的未知列 'o.user_id' 它没有占用订单表列
    • 我假设您在 order 表中有一个 user_id 列要加入,否则您希望如何提取与订单对应的用户名? :)
    • 在订单表中我有user_id,在用户表中我有id 这两个字段都可以加入
    • 所以把 WHERE 子句改成 WHERE u.id = o.user_id :)
    • 我自己做的,但之后我才看到错误o.user_id :(
    猜你喜欢
    • 2021-12-04
    • 2011-11-29
    • 2014-04-18
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    相关资源
    最近更新 更多