SELECT tg.id,tg.name
FROM trd_goods tg LEFT JOIN trd_goods_tag_relation
tgt ON tg.id
= tgt.goods_id
这是我的sql语句左边假如50条数据,右边100条数据,为一对多的关系,如果按我一直以来的理解left join以左表为基准的情况下,最后出来的数据最多只有50条,右表随机匹配一条关联上的。但是现实出现的结果是100条数据,有点想不通大神们给我科普下啊
SELECT tg.id,tg.name
FROM trd_goods tg LEFT JOIN trd_goods_tag_relation
tgt ON tg.id
= tgt.goods_id
这是我的sql语句左边假如50条数据,右边100条数据,为一对多的关系,如果按我一直以来的理解left join以左表为基准的情况下,最后出来的数据最多只有50条,右表随机匹配一条关联上的。但是现实出现的结果是100条数据,有点想不通大神们给我科普下啊
15 回答8.4k 阅读
8 回答6.2k 阅读
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
3 回答6k 阅读
你理解的左连接是错误的,左连接是会匹配所有满足条件的数据,如果
trd_goods
中有记录在trd_goods_tag_relation
匹配不到数据还是会产生一条记录,只不过查询中trd_goods_tag_relation
中的字段是null
, 这就是以左边的表为主。