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。