gpt4 book ai didi

mysql - Right Join 不返回右侧表中的所有记录

转载 作者:行者123 更新时间:2023-11-29 04:39:21 24 4
gpt4 key购买 nike

我有两张 table

Table 1 : assetdetail : itm_id,itm_slno,itm_desc,..

Table 2 : itmtype : typ_id,typname,..

Table2 包含 6 个不同的 typname。

但是当我使用 right join 时它只返回 4 条记录。

enter image description here

我的查询是:

SELECT a.itm_id,i.typname,a.itm_slno,a.itm_desc,a.itm_class from assetdetail
a right join itmtype i on i.typ_id=a.typ_id where a.itm_id!='234'
and itm_class='XYZ' group by i.typname

我需要获取连接查询中的所有 6 条类型名称记录。我的查询有什么问题?

最佳答案

right join 中,first 表的条件需要进入 on 子句,而不是 where子句:

SELECT a.itm_id, i.typname, a.itm_slno, a.itm_desc, a.itm_class
from assetdetail a right join
itmtype i
on i.typ_id = a.typ_id and a.itm_id <> '234' and a.itm_class = 'XYZ'
group by i.typname;

第一个表中的非匹配行具有 NULL 值,这导致 where 中的比较失败。

不过,我会把它写成 left join。大多数人发现逻辑更容易遵循:保留第一个表中的所有行,无论是否有匹配项:

SELECT a.itm_id, i.typname, a.itm_slno, a.itm_desc, a.itm_class
from itmtype i left join
assetdetail a
on i.typ_id = a.typ_id and a.itm_id <> '234' and a.itm_class = 'XYZ'
group by i.typname;

条件保持不变。

关于mysql - Right Join 不返回右侧表中的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33102652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com