【问题标题】:MYSQL display Null employees on left joinMYSQL 在左连接上显示 Null 员工
【发布时间】:2014-08-06 14:56:52
【问题描述】:

我在如何在此查询中显示所有空值时遇到困难

这是我的SQL fiddle

 SELECT project_staff_assignment.taxemployee_id, taxemployee.nickname
  FROM taxemployee 
  LEFT JOIN project_staff_assignment ON project_staff_assignment.taxemployee_id = taxemployee.id
 WHERE taxemployee.id = 4

我想看到的也是显示其他员工为空值

【问题讨论】:

  • 不清楚你在问什么。显示您希望看到的示例
  • 用左外连接替换左连接
  • 你只需要空值吗?

标签: mysql sql


【解决方案1】:

可能是这样的

SELECT project_staff_assignment.taxemployee_id, taxemployee.nickname
FROM taxemployee 
LEFT JOIN project_staff_assignment ON project_staff_assignment.taxemployee_id = taxemployee.id
WHERE taxemployee.id = 4 OR project_staff_assignment.taxemployee_id IS NULL

FIDDLE DEMO

【讨论】:

    【解决方案2】:

    如果我理解正确,this 就是您所需要的。 删除 where 条件。它将仅返回 1 条记录,因为您明确过滤 id = 4

     SELECT project_staff_assignment.taxemployee_id, taxemployee.nickname
      FROM taxemployee 
      LEFT JOIN project_staff_assignment ON project_staff_assignment.taxemployee_id = taxemployee.id
    

    UPDATED FIDDLE

     SELECT 
    CASE project_staff_assignment.taxemployee_id WHEN '4' THEN project_staff_assignment.taxemployee_id ELSE NULL END AS REQUIRED_FIELD,
    taxemployee.id,`EmployeeNumber`, `Fullname`, `Nickname`,`Position`, `level`
      FROM taxemployee 
      LEFT  JOIN project_staff_assignment  ON project_staff_assignment.taxemployee_id = taxemployee.id
    

    所做的是,选择所有记录,并通过使用CASE STATEMENT,如果 value = 4,则显示为 4,否则显示为 NULL。

    【讨论】:

    • 过滤器 id = 4 时显示所有记录怎么样?并将所有其他记录显示为 null
    • @freddy:参考更新的小提琴:sqlfiddle.com/#!2/8bbe4/47。这正是你想要的。
    • 我认为这太棒了..顺便说一下,我可以使用开始和结束列进行过滤..而不是员工ID,我将使用开始和结束日期...示例...开始> = '2014-08-01'
    • @freddy:这是另一个问题,您需要进一步解释。我无法理解您到底需要什么。如果此答案对您有所帮助,请单击此答案旁边的灰色勾号接受作为答案。
    • 我想你指的是这个问题。 stackoverflow.com/questions/25136019/…。现在看看它。同时,请接受这个答案。
    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2012-11-13
    • 2014-11-06
    相关资源
    最近更新 更多