为什么 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
我的数据库中有两个表,一个是 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