我有一个这样的情况,我有一个表1:
Id Name
---------
1 C
2 A
3 B
4 B
5 B
6 A
我有一个这样的表2(这里的id,name与表1中的id,name相同):
Id Name
---------
1 A
1 B
1 C
2 A
2 C
3 B
4 A
4 B
5 B
6 A
也就是说,表2的id与表1相同,但Map到多个名称。我已经为表2中的每个id对每组名称(a、b、c)进行了排序,但如图所示,每个id可能不会Map到所有3个id。我想做一个查询,为每个id返回表a中与表b中id对应的值组中的值的索引。也就是说,我想要下表:
Id Name
---------
1 3
2 1
3 1
4 2
5 1
6 1
例如,您可以看到,对于id=2,表1的名称为“a”。表2中id=2的名称为“a”和“c”。由于'a'是列表的第一个成员,['a','c']1在最终查询中返回。
编写此查询的最佳方法是什么?
1条答案
按热度按时间okxuctiv1#
这样的方法应该有用:
sql演示
根据id连接两个表。
按t1.id分组,因为我们希望第一个表中每个id有一行。
我们将第二个表中的名称串联成一个字符串
使用获取该字符串中的索引
find_in_set
感谢juan carlos oropeza设置了一个sql小提琴!