2 u014419425 u014419425 于 2017.01.11 07:56 提问

怎么让结果集为给定的list?

怎么让SQL抓取的结果集一列为自己给定的一个list?不要用union。比如给定一个list:apple,orange,banana。要得到一个结果集是竖着一列:
水果
apple
orange
banana

2个回答

engchina
engchina   Rxr 2017.01.11 15:33
已采纳

你的框架的持久层使用的是什么技术?
你的list是怎么传给sql的?

根据你框架使用的技术不同,解决方案不同。
比如,如果使用mybatis的话,倒是使用union all可以实现。(知道你不要用union)

<select id="selectTmpResult" parameterType="map"
        resultType="java.lang.String">
    <trim prefixOverrides="union all">
    union all
    (select
    <foreach collection="tmpList" item="tmpItem"
        separator="">
        #{tmpItem} as Value
    </foreach>
    from dual
    )
    </trim>
</select>
engchina
engchina 回复哈迪彗星: Union all的性能要远远好于Union,我们一个项目调优,原来用union是3个小时,用Union all后是30分钟。 你这个项目和要实现的东西我们不了解,光从用sql整形list来说,你可以根据你的持久层技术选择最优方案。比如说考虑建临时表,或者用plsql,或者可以用java来做。
11 个月之前 回复
u014419425
u014419425 list大了,用union all影响性能
11 个月之前 回复
tang_cheng
tang_cheng   2017.01.11 09:36

sql文中行转列虽然能做,但是比较复杂,且不同数据库的操作都不禁相同。如果你是通过代码读取数据的,为什么不直接扫描列然后保存成list呢?这样既简单,又通用

u014419425
u014419425 现在是要从list传入SQL,不是从结果集到list
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!