我需要在sql查询中执行此操作。让我知道这是否可能
我有一个表,它有一个类似(表1(的映射
num,value
2,'h'
3,'b'
5,'c'
现在我有了另一个有这些值的表(表2(
name, config
"test1",45
"test2",20
现在我想要的是sql查询,它将通过检查config列值是否可被table1.num整除,以及如果是,将table1.value连接到它来向我的table2添加另一列
所以现在sql查询之后,它应该变成
name, config, final
"test1",45, bc
"test2",20, hc
请让我知道我是否可以对这个进行查询
您可以使用交叉连接,mod函数https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html#function_mod和group_concathttps://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat
select t2.name,t2.config,group_concat(t1.value separator '') final
from table1 t1
cross join table2 t2
where t2.config % t1.num = 0
group by t2.name,t2.config
+-------+--------+-------+
| name | config | final |
+-------+--------+-------+
| test1 | 45 | bc |
| test2 | 20 | hc |
+-------+--------+-------+
2 rows in set (0.00 sec)
p.Salmon的答案应该适用于MySQL。如果你正在使用Presto,那么这将起作用:
SELECT t2.name,
t2.config,
array_join(array_agg(t1.value),'','') AS final
FROM table1 t1
CROSS JOIN table2 t2
WHERE t2.config % t1.num = 0
GROUP BY t2.name,
t2.config