php - 在 mysql 中应用联接后如何获取字段为 null 或空的所有列

标签 php mysql sql

我的第一个表结构和数据如下(允许):

-------------------------
|Sno   |   allwnce      |
------------------------|
|1     |    HRA         |
------------------------|
|2     |    CA          |
------------------------|
|3     |    TA          |
------------------------|
|4     |    SA          |
------------------------

第二个表结构和数据如下(save_employee_allowance):

----------------------------------------------
|Sno   |   EmpID     | allowanceName|  amount |
----------------------------------------------|
|1     |    EM-1001  |     HRA      |  1200   |
----------------------------------------------|
|2     |    EM-1001  |      CA      |  800    |
----------------------------------------------|

我想要这样的:

----------------------------------------------
|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'

但它只给出匹配津贴名称的结果

最佳答案

如果您想要allowance 中的所有行,请将其作为LEFT JOIN 中的第一个表。此外,您还需要将 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';

关于php - 在 mysql 中应用联接后如何获取字段为 null 或空的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38481397/

相关文章:

php - PDO 事务是否涵盖 PDO::query()?

javascript - 如何修改php制作SimpleImage

javascript - 单击按钮时增加当前 URL 的最后一段

javascript - 使用javascript隐藏或显示多个表

php - 将新行添加到唯一表

mysql - 如何优化多个连接

mysql - 如何查找一行不包含另一列中的值

sql - 如何使用分隔符将两列结果合并到一列中

sql - 在 Linq to Entity Query 中检查记录是否存在的最简单方法

mysql - 这个查询看起来优化了吗?