为什么MySQL中的Inner Join会返回不相关的信息


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 server中,而不是mysql 中。