我的数据如下。
A
A1 A2
B B1
C C1 C2 C3
这些信息转移到两个名为group1
和group2
的表中。
group1
拥有第一级数据和中级数据。
group2
拥有最后一级数据和中级数据。
即
group1
group_name group_id
A 1
A1 2
B 3
C 4
C1 5
C2 6
group2
group2_name parent_id
A1 1
A2 2
B 1
B1 3
C 1
C1 4
C2 5
C3 6
现在我想获得A组下的最后一级信息。
我的输出可能是
group2_name
A2
B1
C3
我可以使用以下查询来获取信息级别2。
select group2.group_name from group2
inner join
group1 on group1.group_id = group2.parent_id
where group1.group_name = 'A'
如何获得上述输出?
请帮帮我。
答案 0 :(得分:1)
你可以用这个:
select
group2.group_name
from
group2 left join group1
using(group_name)
where
group1.group_name is null
and group2.group_name like 'A%'
返回表group2中不存在于表group1中的所有元素。 或者(取决于数据库的结构)也是这样的:
select
concat(left(group_name,1),
case when max(mid(group_name,2,length(group_name)-1)+0)>0 then
max(mid(group_name,2,length(group_name)-1)+0)
else '' end)
from group2
where group2.group_name like 'A%'
group by left(group_name,1)
这里我正在为字符串的第一个字符分组,并获取数值的最大值。