Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Arraylist传递给SQL查询以获得所需结果_Java_Sql_Database_Parameters_Hql - Fatal编程技术网

Java 将Arraylist传递给SQL查询以获得所需结果

Java 将Arraylist传递给SQL查询以获得所需结果,java,sql,database,parameters,hql,Java,Sql,Database,Parameters,Hql,我写了这样一个查询: select agent_id,count(id) as agentCount from demo.table lst where lst.agent_id in(:idpList) group by agent_id order by agentCount ASC; 但这只返回idp列表中的代理id,我还想获取列表中但不在demo.table中的id,并将计数返回为0。 我不知道该怎么做 例:列表:[20,17,16,15,50]所以50不是表,但我想在最终结果中包括5

我写了这样一个查询:

select agent_id,count(id) as agentCount from demo.table lst where lst.agent_id in(:idpList) group by agent_id order by agentCount ASC;
但这只返回idp列表中的代理id,我还想获取列表中但不在demo.table中的id,并将计数返回为0。 我不知道该怎么做

例:列表:[20,17,16,15,50]所以50不是表,但我想在最终结果中包括50

我从一个数据库中得到了两个数据库,我正在获取所有的代理id并将其存储在列表中 在另一个数据库中,我有一个表,它存储了与这些id相关联的任务的id和no,所以我想检查与这些代理id相对应的任务被创建了多少次,并获取计数,但由于这些代理id中的一些存在于第二个数据库表中,但一些不存在,对于不存在的一个,计数应该返回0,但从这个查询中我只得到第二个DB表中存在的数据的计数

非常感谢您的帮助。

试试这个:

select count(*),A.agent_id from 
(
select 20 as agent_id
union select 17
union select 16
union select 15
union select 50 ) as A  LEFT JOIN demo.table s on s.agent_id = A.agent_id where s.agent_id in(:idpList)  group by s.agent_id;  
但是你必须创建这个部分( 选择20作为代理\u id 联合选择17 联合选择16 联合选择15 人工选择查询的联合(50)

否则就没有办法了。

试试这个:

select count(*),A.agent_id from 
(
select 20 as agent_id
union select 17
union select 16
union select 15
union select 50 ) as A  LEFT JOIN demo.table s on s.agent_id = A.agent_id where s.agent_id in(:idpList)  group by s.agent_id;  
但是你必须创建这个部分( 选择20作为代理\u id 联合选择17 联合选择16 联合选择15 人工选择查询的联合(50)


否则就没有办法了。

你能分享一下这个查询的输出吗?现在这个查询的输出是agent\u id agentcount 20 2 17 3 16 1 15 1,但我也要50,计数0你好,你的要求不清楚,你能试着重述一下要求吗?你能分享一下这个查询的输出吗?现在这个查询的输出是agent\u id agentcount 20 2 17 3 16 1 15 1,但我也要50,计数0你好,你的要求不清楚,你能试着重述一下要求吗?但是列表是动态的,大小是动态的。我知道,这就是为什么我在回答中写了手动处理的原因,根据用户动态。只需以编程方式创建第一部分,然后根据我的查询加入。但是列表是动态的,大小是动态的。是的,我知道,它是动态的,这就是为什么我在回答中写了手动处理这个问题的原因,根据用户动态,只需以编程方式创建第一部分,然后根据我的查询获取join。