表1有4列,模拟数据如下所示...

MASTER_ID  SUB_ID  DESC   Percent
1234       ABC     TEXT   80
1234       XYZ     TEXT2  20
1234       XYZ     TEXT4  30
9876       XYZ     TEXT2  20
9876       XYZ     TEXT5  10
9876       ABC     TEXT1  20


表2包含每个MASTER_ID的DESC的不同值,它们是表1的第3列...。

MASTER_ID  DESC
1234       TEXT
1234       TEXT2
1234       TEXT4
9876       TEXT2
9876       TEXT5
9876       TEXT1


我需要浏览TABLE1并查找每个特定MASTER_ID的每个SUB_ID缺少哪些DESC。每个MASTER_ID与彼此无关...这意味着我不应该看到MASTER_PLAN中不存在的描述。例如,MASTER_ID 9876的DESC为TEXT5。该DESC仅应出现在MASTER_ID的9876 DESC中。 SUB_ID可以存在于不同的MASTER_ID中。但是如前所述,每个MASTER_ID应该被认为是独立的。

决赛桌应该像这样...

MASTER_ID  SUB_ID  DESC   Percent
1234       ABC     TEXT    80
1234       ABC     TEXT2   0
1234       ABC     TEXT4   0
1234       XYZ     TEXT2   20
1234       XYZ     TEXT4   30
1234       XYZ     TEXT    0
9876       XYZ     TEXT2   20
9876       XYZ     TEXT5   10
9876       XYZ     TEXT1   0
9876       ABC     TEXT1   20
9876       ABC     TEXT2   0
9876       ABC     TEXT5   0

最佳答案

您可以尝试下面的查询

select t3.master_id, t3.sub_id, t3.Desc1, case when t4.percentage is null then 0 else t4.percentage end percentage
from
    (select  distinct t1.master_id, sub_id, t2.Desc1
    from table1 t1
    cross join table2 t2
    where t1.master_id = t2.master_id) t3
left join table1 t4
 on t4.master_id = t3.master_id
  and t3.sub_id = t4.sub_id
  and t3.desc1 = t4.desc1


上面的查询给我下面的结果

mysql - 根据条件排序并添加到表中-LMLPHP

希望这对您有所帮助。

关于mysql - 根据条件排序并添加到表中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40744460/

10-15 18:40