为什么 Inner Join 会加入 MySQL return 不相关的信息?

Why would Inner Join in MySQL return unrelated information?

我的数据库中有两个表,一个是 order,另一个是 user

我想提取订单信息以及下订单的关联用户,为此,我使用了 INNER JOIN 来连接用户名上的两个表。

但是,问题在于,它显示了正确的订单信息,但该用户不是相关用户,而是数据库中的第一条用户记录。

为什么会发生这种情况?

这是我的查询:

    SELECT orders.oid, 
           orders.ordernumber, 
           orders.date_requested, 
           orders.date_approved, 
           orders.status, 
           orders.region, 
           orders.users_name, 
           orders.comments, 
           orders.customShippingAddress, 
           orders.approval_comments, 
           orders.approved_by_id, 
           users.firstname, 
           users.lastname, 
           users.address, 
           users.address2, 
           users.city, 
           users.`state`, 
           users.zip, 
           users.phonenum, 
           users.cellnum, 
           users.officenum, 
           users.region, 
           users.shipping_address 
      FROM orders 
INNER JOIN users 
        ON orders.users_name=users.firstname + ' ' + users.lastname
     WHERE orders.oid='$id'";

我不明白为什么这不起作用。谁能给我一些指导?

我猜你想要

ON orders.users_name=CONCAT(users.firstname ,' ',users.lastname)

您的版本

ON orders.users_name=users.firstname + ' ' + users.lastname

可能会在幕后进行一些转换,试图将内容加起来,+ 在 sql 服务器中连接内容,而不是 mysql