MySQL单查询关联三表:给定contract_id获取contract.details与user.email
解决方案
表结构回顾
- user表
- user_id(PK,主键)
- agreement_user表
- agreement_user_id(PK,主键)
- user_id(FK,关联user.user_id)
- details
- contract表
- contract_id(PK,主键)
- agreement_user_id(FK,关联agreement_user.agreement_user_id)
- details
查询SQL语句
给定contract_id时,通过关联三张表即可获取目标字段:
SELECT c.details AS contract_details, u.email FROM contract c JOIN agreement_user au ON c.agreement_user_id = au.agreement_user_id JOIN user u ON au.user_id = u.user_id WHERE c.contract_id = [你的contract_id数值];
说明
- 使用内连接(
JOIN)确保只返回存在完整关联链路的记录,即该contract对应有agreement_user和user数据。 - 给表设置别名(
c、au、u)简化语句,避免字段歧义。 - 执行时将
[你的contract_id数值]替换为实际要查询的contract_id即可。
内容的提问来源于stack exchange,提问作者iphonem
相关产品推荐
相关产品推荐

