如果其他表中不存在id,则获取不同的行并使用合并

d_unknown

我有两个表:

Job_Order

-id
-creation_date
-assigned_to
-job_ordertype
-client

Job_Order_Stage

-id
-stage
-date 
-job_order(foreign key to job_order)

job_order如果ID在Job_Order_Stage中不存在,我想获取中的所有行并将阶段设置为0。而且我也只想获取在中找到max(stage)相同的行我该怎么做?job_orderjob_order_stage

我在这里查询:

SELECT 
    a.id,a.creation_date,
    e.user_name,c.operation,
    c.system_,d.name,
    Coalesce((s.stage), 0) as stage_name
FROM job_order a
INNER JOIN account b ON a.assigned_to=b.id
INNER JOIN job_order_type c ON a.job_order_type=c.id
INNER JOIN user e ON b.user=e.user_id
INNER JOIN client d ON a.client=d.id
LEFT JOIN job_order_stage s ON s.job_order = a.id

我的这个sql语句的问题是,它显示所有作业订单及其重复的副本,并具有不同的阶段。如何解决这个问题?

帕拉

这将获取所有不在job_order_stage中的job_orders

select job_order.*
  from job_order
    left join job_order_stage
      on job_order.id = job_order_stage.job_order
  where job_order_stage.job_order is null;

这可以让您max(stage)找到工作在job_order_stage中的位置

select job_order.id, max(job_order_stage.stage)
  from job_order 
    inner join job_order_stage
      on job_order.id = job_order_stage.job_order
  group by job_order.id;

还是您想以某种方式将它们合并?这将是这样的:

select job_order.*, max(coalesce(job_order_stage.stage, 0)) stage
  from job_order
    left join job_order_stage
      on job_order.id = job_order_stage.job_order
  group by job_order.id

这可以利用/滥用mysqls的特殊处理group by,但是在这种情况下应该没问题。

从评论更新

select *
  from (
    select job_order.*, max(coalesce(job_order_stage.stage, 0)) stage
      from job_order
        left join job_order_stage
          on job_order.id = job_order_stage.job_order
      group by job_order.id
 ) q 
 where stage = 2;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Mysql - 如果同一表的其他行中不存在值,则更新行

来自分类Dev

SQL选择行如果其他表中不存在

来自分类Dev

当其他表中不存在ID时,使用ConditionExpression限制插入

来自分类Dev

MySQL显示一个表中存在但其他表中不存在的行

来自分类Dev

MySQL显示一个表中存在但其他表中不存在的行

来自分类Dev

获取表中不存在的行

来自分类Dev

MYSQL:复制行表并插入,如果不存在其他UPDATE

来自分类Dev

如果图像不存在,如何使用其他图像?使用('#id')。attr(“ src”

来自分类Dev

从表中删除其他表中不存在的行

来自分类Dev

获取具有特定用户标识的其他表中不存在的记录

来自分类Dev

如何获取其他表中不存在的值

来自分类Dev

PostgreSQL查找其他两个表中不存在的ID

来自分类Dev

mysql在其他表中不存在

来自分类Dev

SQL选择并查找其他表中不存在的行

来自分类Dev

如果表中不存在该行,如何获取另一行的值?

来自分类Dev

在CTE中使用其他表中不存在的列

来自分类Dev

仅当其他表中不存在数据时,SQL 才从该表中获取数据

来自分类Dev

选择其他表中不存在的行,通过第二个表中的数据联接[SQL]

来自分类Dev

MySQL获取关系表中不存在的行

来自分类Dev

SQL查询以显示包含两个表且其他表中不存在的数据行

来自分类Dev

如何获取每个类别中存在但其他类别中不存在的项目数?

来自分类Dev

如果不存在从上一个查询中获取的行,则插入到表值中

来自分类Dev

撤消Git中的合并,以便不存在来自其他分支的提交

来自分类Dev

在其他表中不存在的表中查找记录

来自分类Dev

mysql合并两个表(如果不存在)

来自分类Dev

获取表中不存在的值?

来自分类Dev

选择表中不存在的ID

来自分类Dev

选择表中不存在的ID

来自分类Dev

SQL:从用户其他表中不存在的表中选择

Related 相关文章

  1. 1

    Mysql - 如果同一表的其他行中不存在值,则更新行

  2. 2

    SQL选择行如果其他表中不存在

  3. 3

    当其他表中不存在ID时,使用ConditionExpression限制插入

  4. 4

    MySQL显示一个表中存在但其他表中不存在的行

  5. 5

    MySQL显示一个表中存在但其他表中不存在的行

  6. 6

    获取表中不存在的行

  7. 7

    MYSQL:复制行表并插入,如果不存在其他UPDATE

  8. 8

    如果图像不存在,如何使用其他图像?使用('#id')。attr(“ src”

  9. 9

    从表中删除其他表中不存在的行

  10. 10

    获取具有特定用户标识的其他表中不存在的记录

  11. 11

    如何获取其他表中不存在的值

  12. 12

    PostgreSQL查找其他两个表中不存在的ID

  13. 13

    mysql在其他表中不存在

  14. 14

    SQL选择并查找其他表中不存在的行

  15. 15

    如果表中不存在该行,如何获取另一行的值?

  16. 16

    在CTE中使用其他表中不存在的列

  17. 17

    仅当其他表中不存在数据时,SQL 才从该表中获取数据

  18. 18

    选择其他表中不存在的行,通过第二个表中的数据联接[SQL]

  19. 19

    MySQL获取关系表中不存在的行

  20. 20

    SQL查询以显示包含两个表且其他表中不存在的数据行

  21. 21

    如何获取每个类别中存在但其他类别中不存在的项目数?

  22. 22

    如果不存在从上一个查询中获取的行,则插入到表值中

  23. 23

    撤消Git中的合并,以便不存在来自其他分支的提交

  24. 24

    在其他表中不存在的表中查找记录

  25. 25

    mysql合并两个表(如果不存在)

  26. 26

    获取表中不存在的值?

  27. 27

    选择表中不存在的ID

  28. 28

    选择表中不存在的ID

  29. 29

    SQL:从用户其他表中不存在的表中选择

热门标签

归档