表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 - 根据条件排序并添加到表中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40744460/