请问如何在SQL的where条件支持可变参数?

有一个查询的问题,请教下大佬看是否能实现,谢谢!
需求:有一个工作列表,其中有一列是“负责人”,一项工作可能有一个或多个负责人,所以列类型是:多选。如图所示。现在我想查询每一个人,在工作列表中共负责了多少项工作。例如图中,查出来应该是张三2项,李四3项,王五1项,赵六2项,孙七1项。即要将姓名列表中元素作为参数传给SQL中的那个where条件。请问这种需求如何实现 ,谢谢!
name=[‘张三’,‘李四’,‘王五’,‘赵六’,‘孙七’,‘钱八’]
no_data_now=base.query(‘select count(1) from 工作列表 where 负责人 in name[0]’)
1

您好,根据您的需求,列表型数据(如多选列)可以利用HAS ANY OF等扩展语法,在WHERE中对子元素进行遍历。可以参考、修改以下的基于python API的语法来满足您的需求:

name = '张三'
tablename = 'tmptable'
print(base.query(f'''SELECT count(1) as `{name}负责的任务数` FROM `{tablename}` WHERE `负责人` HAS ANY OF ('{name}');'''))
1 个赞

谢谢指导,解决了大问题。 :+1: