Php 在mysql中应用连接后,如何获取字段为null或空的所有列
我的第一个表结构和数据如下(容差): 第二个表的结构和数据如下(保存员工津贴): 我想要这样:Php 在mysql中应用连接后,如何获取字段为null或空的所有列,php,mysql,sql,Php,Mysql,Sql,我的第一个表结构和数据如下(容差): 第二个表的结构和数据如下(保存员工津贴): 我想要这样: ---------------------------------------------- |Sno | EmpID | allowanceName| amount | ----------------------------------------------| |1 | EM-1001 | HRA | 1200 | -----------
----------------------------------------------
|Sno | EmpID | allowanceName| amount |
----------------------------------------------|
|1 | EM-1001 | HRA | 1200 |
----------------------------------------------|
|2 | EM-1001 | CA | 800 |
----------------------------------------------|
|3 | EM-1001 | TA | NULL |
----------------------------------------------|
|4 | EM-1001 | SA | NULL |
----------------------------------------------|
Select *
From save_employee_allowance
LEFT JOIN allowance
ON allowance.allwnce = save_employee_allowance.allowanceName
Where EmpID = 'EM-1001'
我正在尝试这样的左连接:
----------------------------------------------
|Sno | EmpID | allowanceName| amount |
----------------------------------------------|
|1 | EM-1001 | HRA | 1200 |
----------------------------------------------|
|2 | EM-1001 | CA | 800 |
----------------------------------------------|
|3 | EM-1001 | TA | NULL |
----------------------------------------------|
|4 | EM-1001 | SA | NULL |
----------------------------------------------|
Select *
From save_employee_allowance
LEFT JOIN allowance
ON allowance.allwnce = save_employee_allowance.allowanceName
Where EmpID = 'EM-1001'
但它只给出匹配津贴名称的结果如果您想要
津贴
中的所有行,则将其作为左联接中的第一个表。此外,您还需要将WHERE
条件移动到ON
子句:
Select a.Sno, coalesce(em.EmpID, 'EM-1001') as EmpId, a.allowanceName, ea.amount
From allowance a LEFT JOIN
save_employee_allowance ea
ON a.allwnce = ea.allowanceName and ea.EmpID = 'EM-1001';
如果希望余量中的所有行
,则将其作为左联接中的第一个表
。此外,您还需要将WHERE
条件移动到ON
子句:
Select a.Sno, coalesce(em.EmpID, 'EM-1001') as EmpId, a.allowanceName, ea.amount
From allowance a LEFT JOIN
save_employee_allowance ea
ON a.allwnce = ea.allowanceName and ea.EmpID = 'EM-1001';
您好,您必须将津贴放在左侧,因为left JOIN
关键字返回左表中的所有行(津贴)
,右表中的匹配行(保存员工津贴)。
如果没有匹配项,则右侧的结果为空
select *
From allowance a LEFT JOIN
save_employee_allowance ea
ON a.allwnce = ea.allowanceName where ea.EmpID = 'EM-1001';
您好,您必须将津贴放在左侧,因为left JOIN
关键字返回左表中的所有行(津贴)
,右表中的匹配行(保存员工津贴)。
如果没有匹配项,则右侧的结果为空
select *
From allowance a LEFT JOIN
save_employee_allowance ea
ON a.allwnce = ea.allowanceName where ea.EmpID = 'EM-1001';
我认为您想要的是不可能的,因为您在save|u employee|u津贴中没有记录für SA,所以您无法获得行| 4 | EM-1001 | SA | NULL |,因为EM-1001来自save|u employee|u allownce使用右连接而不是左连接join@Jens你说得对,但如果我不明白,我能应付。谢谢,我认为你想要的是不可能的,因为你在储蓄员工津贴中没有记录,所以你不能得到行| 4 | EM-1001 | SA | NULL |,因为EM-1001来自储蓄员工津贴使用右连接而不是左连接join@Jens你说得对,但如果我不明白,我能应付。感谢您无需将条件移至ON条款。事实上,它会产生不理想的结果。我认为它不会得到预期的结果,因为在中,余量
是没有值的EM-1001
,这在output@Jens . . . 很好的观察。这只需要对此查询进行简单的调整。不需要将条件移动到ON子句。事实上,它会产生不理想的结果。我认为它不会得到预期的结果,因为在中,余量
是没有值的EM-1001
,这在output@Jens . . . 很好的观察。这只需要对此查询进行简单的调整。