You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单条MySQL查询关联access表双ID与usersx表获取对应last_name

MySQL关联查询获取两个关联用户姓氏的解决方案

我有一个名为access的MySQL表,包含owner_id和date_created_id两个字段;另有一个名为usersx的表,包含id和last_name两个字段。需要通过单条查询语句,从usersx表中获取与access表中某条记录的owner_id和date_created_id分别匹配的两个last_name值。

举个例子:若access表中某条数据的owner_id为123、date_created_id为246,且usersx表中id为123和246的记录对应的last_name分别为Smith和Jones,查询需要得到这两个值。

之前尝试的SQL语句存在逻辑错误,JOIN条件要求access.owner_id和access.date_created_id同时等于usersx.id,这只有当两个ID值相等时才能匹配,无法满足需求:

SELECT usersx.last_name 
FROM usersx
JOIN access 
ON access.owner_id = usersx.id AND access.date_created_id = usersx.id
WHERE access.owner_id = '123' OR access.date_created_id = '246';

正确的查询方法

方法一:通过两次关联获取单行双字段结果

通过给usersx表设置不同别名,两次关联access表,分别获取所有者和创建者的姓氏,结果以单行两个字段返回:

SELECT 
    u1.last_name AS owner_last_name,
    u2.last_name AS creator_last_name
FROM access
JOIN usersx u1 ON access.owner_id = u1.id
JOIN usersx u2 ON access.date_created_id = u2.id
WHERE access.owner_id = '123' AND access.date_created_id = '246';

执行后会得到类似这样的结果:

owner_last_namecreator_last_name
SmithJones

方法二:通过UNION获取两行独立结果

如果需要将两个姓氏以两行形式返回,可以使用UNION组合两个查询:

SELECT usersx.last_name AS name
FROM access
JOIN usersx ON access.owner_id = usersx.id
WHERE access.owner_id = '123' AND access.date_created_id = '246'
UNION
SELECT usersx.last_name AS name
FROM access
JOIN usersx ON access.date_created_id = usersx.id
WHERE access.owner_id = '123' AND access.date_created_id = '246';

执行后会得到类似这样的结果:

name
Smith
Jones

内容的提问来源于stack exchange,提问作者Beta Projects

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 16:42:21