mapper.xml中的mysql查询问题
现有两个表分别为 A 和 B
此时手头上有参数nums = ["a1","a3"]
根据已有的参数,要向表B中查得B.num字段值为"a1"、"a3"
的记录分别的条数,及表A中A.num字段值为"a1"、"a3"
的字段所对应的A.a_name字段的值
想要得到的数据形式:
尝试过程
SQL语句:(执行一次只能获得一行数据,若多次执行的话,当参数过长时会频繁发起数据库操作,请求响应时间太长)
SELECT SUM(b.num = "a1") AS `count`,a.a_name,a.num FROM a,b WHERE b.num = a.num AND b.num ="a1";
mapper.xml中:
<select id="xxx" parameterType="java.lang.String" resultType="xxx">
SELECT SUM(b.num = "a1") AS `count`,a.name...
</select>
SELECT子句中如何引用参数并且此处还有循环,已跪...
是我思路不对还是此需求没有实现方案?求解惑...
更新:
另一思路:
SELECT num,a_name FROM a where num IN ("a1","a3");
得
num a_name
a1 麻辣串
a3 香肠
SELECT COUNT(num = "a1") AS "a1",COUNT(num = "a3") AS "a3" FROM b;
得
a1 a3
3 2
将两次查询所得的结果进行处理,即得出需要的数据格式
然有没有能一句SQL即可解决的方案?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
思路没问题,sql有问题
foreach的循环只需要处理
WHERE b.num in ( "a1","a3")
部分就可以了你好,直接在查询结果中使用子查询即可解决问题。而且这种sql效率很高,group by 之后能大幅减少查询结果的条数,在这基础上使用子查询就会快很多很多。
select
from b t_b
group by t_b.num