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

如何访问不同表元素?宠物前后门店同国统计SQL疑问

现有表结构

pets表

动物prev_storecurr_store
猫ABCDEF
狗ABCGHI
鱼DEFXYZ
蛇XYZJKM

pet_store表

门店Country
ABCEngland
DEFDenmark
GHIEngland
XYZDenmark
JKMDenmark

需求说明

检查pets表中每个动物的prev_store和curr_store是否属于同一国家,若是则统计该国家的出现次数,预期结果:

Country出现次数
England1
Denmark2

原SQL问题分析

你写的SQL中,pets.prev_store = pet_store.Store and pets.curr_store = pet_store.Store这个条件要求prev_store和curr_store必须是同一个门店,这和需求不符——我们需要的是两个门店归属同一国家,而非同一个门店。

正确SQL写法

需要两次关联pet_store表,分别获取prev_store和curr_store对应的国家,筛选出两国相同的记录后再统计次数:

SELECT ps_prev.Country, COUNT(*) AS 出现次数
FROM pets
JOIN pet_store ps_prev ON pets.prev_store = ps_prev.门店
JOIN pet_store ps_curr ON pets.curr_store = ps_curr.门店
WHERE ps_prev.Country = ps_curr.Country
GROUP BY ps_prev.Country;

逻辑解释

  1. 第一次关联pet_store(别名ps_prev),获取每个动物prev_store对应的国家;
  2. 第二次关联pet_store(别名ps_curr),获取每个动物curr_store对应的国家;
  3. 通过WHERE条件筛选出两个国家相同的记录;
  4. 按国家分组,用COUNT(*)统计每个国家符合条件的动物数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:15:19