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

MySQL Sakila数据库多JOIN查询员工与门店同城市匹配问题

原查询问题分析

你写的查询存在两个核心逻辑缺陷:

  • 末尾JOIN store没有指定关联条件,实际生成了员工表与门店表的笛卡尔积,仅因当前Sakila库中门店只有2条记录才碰巧输出看似正确的结果,数据量扩张后结果会完全不符合要求。
  • 没有关联门店的地址信息,也未校验员工家庭地址与门店地址是否属于同一城市,完全不满足需求的校验逻辑。

正确查询实现

按照需求要求的4次JOIN逻辑,完整关联所有需要校验的表即可,代码如下:

USE sakila;

SELECT 
    s.first_name,
    s.last_name,
    c.city
FROM staff s
-- 关联员工家庭地址
JOIN address a_staff ON s.address_id = a_staff.address_id
-- 关联城市表获取员工家庭所在城市名
JOIN city c ON a_staff.city_id = c.city_id
-- 关联员工所属门店
JOIN store st ON s.store_id = st.store_id
-- 关联门店对应的地址
JOIN address a_store ON st.address_id = a_store.address_id
-- 校验家庭地址与门店地址属于同一城市
WHERE a_staff.city_id = a_store.city_id;

执行后会返回2条符合要求的员工记录,和预期结果一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:36:03