﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-java fans-随笔分类-数据库学习</title><link>http://www.blogjava.net/jlin/category/53798.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 16 Aug 2016 11:03:27 GMT</lastBuildDate><pubDate>Tue, 16 Aug 2016 11:03:27 GMT</pubDate><ttl>60</ttl><item><title>mybatis批量操作</title><link>http://www.blogjava.net/jlin/archive/2016/08/16/431599.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Tue, 16 Aug 2016 10:46:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/archive/2016/08/16/431599.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/431599.html</wfw:comment><comments>http://www.blogjava.net/jlin/archive/2016/08/16/431599.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/431599.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/431599.html</trackback:ping><description><![CDATA[<p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #393939; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #faf7ef;">首先，mysql需要数据库连接配置&amp;allowMultiQueries=true</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #393939; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #faf7ef;">jdbc:mysql://127.0.0.1:3306/mybank?useUnicode=true&amp;characterEncoding=utf8&amp;allowMultiQueries=true</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #393939; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #faf7ef;">oracle下支持执行多条语句，下面3个相同</p><div style="margin: 5px 0px;"><div style="margin: 5px 0px 0px;"><div><span style="font-size: 12px;">&lt;update id="batchUpdate" parameterType="java.util.List"&gt;</span></div><div><span style="font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";" &gt;&nbsp;</span></div><div><span style="font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; update T_EMP_1&nbsp;</span></div><div><span style="font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;set&gt; &nbsp; &nbsp; &nbsp;&nbsp;</span></div><div><span style="font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; age = #{item.age}+1,name=#{item.name}</span></div><div><span style="font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/set&gt;</span></div><div><span style="font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; where id = #{item.id}</span></div><div><span style="font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/foreach&gt;</span></div><div><span style="font-size: 12px;">&lt;/update&gt;</span><br /><br /><div>&lt;update id="batchUpdate" parameterType="java.util.List"&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;foreach collection="list" item="item" index="index" open="begin" close="end;" separator="" &gt;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; update T_EMP_1&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;set&gt; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; age = #{item.age}+1,name=#{item.name}</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/set&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; where id = #{item.id};</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/foreach&gt;</div><div>&nbsp; &nbsp; &lt;/update&gt;<br /><br /><div>&lt;update id="batchUpdate" parameterType="java.util.List"&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; begin</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;foreach collection="list" item="item" index="index" separator="" &gt;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; update T_EMP_1&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;set&gt; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; age = #{item.age}+1,name=#{item.name}</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/set&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; where id = #{item.id};</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/foreach&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; end;</div><div>&nbsp; &nbsp; &lt;/update&gt;</div></div></div></div></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #393939; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #faf7ef;">foreach的主要用在构建in条件中，它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有 item，index，collection，open，separator，close。item表示集合中每一个元素进行迭代时的别名，index指 定一个名字，用于表示在迭代过程中，每次迭代到的位置，open表示该语句以什么开始，separator表示在每次进行迭代之间以什么符号作为分隔 符，close表示以什么结束，在使用foreach的时候最关键的也是最容易出错的就是collection属性，该属性是必须指定的，但是在不同情况 下，该属性的值是不一样的，主要有一下3种情况：&nbsp;<br style="margin: 0px; padding: 0px;" />1. 如果传入的是单参数且参数类型是一个List的时候，collection属性值为list&nbsp;<br style="margin: 0px; padding: 0px;" />2. 如果传入的是单参数且参数类型是一个array数组的时候，collection的属性值为array&nbsp;<br style="margin: 0px; padding: 0px;" />3. 如果传入的参数是多个的时候，我们就需要把它们封装成一个Map了，当然单参数也可以封装成map，实际上如果你在传入参数的时候，在breast里面也是会把它封装成一个Map的，map的key就是参数名，所以这个时候collection属性值就是传入的List或array对象在自己封装的map里面的key</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #393939; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #faf7ef;">&nbsp;批量删除</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: &quot;Courier New&quot; !important;"><div>&lt;delete id="batchDeleteStudent" parameterType="List"&gt;       <br />    DELETE FROM STUDENT WHERE id IN      <br />     &lt;foreach collection="list" index="index" item="item" open="(" separator="," close=")"&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;    #{item}        <br />    &lt;/foreach&gt;   <br />&lt;/delete&gt;</div></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #393939; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #faf7ef;">批量更新 注意：oracle中 形如 update *** set *** where ** in(....) 这种语句 in所在的集合有条数限制 为1000条</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: &quot;Courier New&quot; !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; line-height: 18px; font-family: &quot;Courier New&quot; !important;"><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&lt;</span><span style="margin: 0px; padding: 0px; color: #800000; line-height: 1.5 !important;">update </span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;">id</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">="batchUpdateStudent"</span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;"> parameterType</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">="List"</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&gt;</span><span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">      <br /> UPDATE STUDENT SET name = "5566" WHERE id IN      <br /> </span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&lt;</span><span style="margin: 0px; padding: 0px; color: #800000; line-height: 1.5 !important;">foreach </span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;">collection</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">="list"</span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;"> item</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">="item"</span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;"> index</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">="index"</span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;"> open</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">="("</span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;"> separator</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">=","</span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;"> close</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">=")"</span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&gt;</span><span style="margin: 0px; padding: 0px; line-height: 1.5 !important;"> <br />          #{item} <br />      </span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&lt;/</span><span style="margin: 0px; padding: 0px; color: #800000; line-height: 1.5 !important;">foreach</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&gt;</span>  <br /> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&lt;/</span><span style="margin: 0px; padding: 0px; color: #800000; line-height: 1.5 !important;">update</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&gt;<br /><br /><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; color: #000000; font-family: &quot;Courier New&quot; !important;"><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&lt;</span><span style="margin: 0px; padding: 0px; color: #800000; line-height: 1.5 !important;">update </span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;">id</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">="batchUpdateStudentWithMap"</span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;"> parameterType</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">="Map"</span> <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&gt;</span><span style="margin: 0px; padding: 0px; line-height: 1.5 !important;"> <br />      UPDATE STUDENT SET name = #{name} WHERE id IN <br />       </span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&lt;</span><span style="margin: 0px; padding: 0px; color: #800000; line-height: 1.5 !important;">foreach </span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;">collection</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">="idList"</span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;"> index</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">="index"</span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;"> item</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">="item"</span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;"> open</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">="("</span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;"> separator</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">=","</span><span style="margin: 0px; padding: 0px; color: #ff0000; line-height: 1.5 !important;"> close</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">=")"</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&gt;<br /></span><span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">            #{item}<br />        </span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&lt;/</span><span style="margin: 0px; padding: 0px; color: #800000; line-height: 1.5 !important;">foreach</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&gt;<br /></span>   <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&lt;/</span><span style="margin: 0px; padding: 0px; color: #800000; line-height: 1.5 !important;">update</span><span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">&gt;</span></pre></span></pre></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #393939; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #faf7ef;">批量插入 &nbsp;mysql和oracle不一样</p><div style="margin: 5px 0px;"><div style="margin: 5px 0px 0px;"><div><span style="font-size: 12px;">mysql：</span></div><div><span style="font-size: 12px;">&lt;insert id="batchInsertStudent" parameterType="java.util.List"&gt; &nbsp;</span></div><div><span style="font-size: 12px;">&nbsp; &nbsp; INSERT INTO STUDENT (id,name,sex,tel,address) &nbsp;</span></div><div><span style="font-size: 12px;">&nbsp; &nbsp; VALUES &nbsp;&nbsp;</span></div><div><span style="font-size: 12px;">&nbsp; &nbsp; &lt;foreach collection="list" item="item" index="index" separator="," &gt; &nbsp;</span></div><div><span style="font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; (#{item.id},#{item.name},#{item.sex},#{item.tel},#{item.address}) &nbsp;</span></div><div><span style="font-size: 12px;">&nbsp; &nbsp; &lt;/foreach&gt; &nbsp;</span></div><div><span style="font-size: 12px;">&lt;/insert&gt;</span><br /><br /><div>oracle：</div><div>&lt;insert id="insertBatch4Oracle" parameterType="List"&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; insert into aa(a,b)</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;foreach collection="list" item="item" index="index" separator="union all" &gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;　　select &nbsp;#{item.a},#{item.b} from dual</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;/foreach&gt;</div><div>&nbsp;&lt;/insert&gt;</div></div></div></div><div style="margin: 5px 0px; font-size: 12px !important;"><div style="margin: 5px 0px 0px;"></div></div><img src ="http://www.blogjava.net/jlin/aggbug/431599.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2016-08-16 18:46 <a href="http://www.blogjava.net/jlin/archive/2016/08/16/431599.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>myBatis批量添加，修改和删除(转)</title><link>http://www.blogjava.net/jlin/archive/2015/07/13/426196.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Mon, 13 Jul 2015 08:39:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/archive/2015/07/13/426196.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/426196.html</wfw:comment><comments>http://www.blogjava.net/jlin/archive/2015/07/13/426196.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/426196.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/426196.html</trackback:ping><description><![CDATA[<h2><span style="font-size: 18px; font-weight: normal;">1、批量添加元素session.insert(String string，Object o)</span></h2><div style="color: #362e2b; font-family: Arial; line-height: 26px; background-color: #ffffff;"><div bg_plain"="" style="width: 693px;"><div><div><strong>[plain]</strong>&nbsp;<a href="http://blog.csdn.net/myjlvzlp/article/details/8434376#" title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-position: 0% 0%; background-repeat: no-repeat;">view plain</a><a href="http://blog.csdn.net/myjlvzlp/article/details/8434376#" title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-position: 0% 0%; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 649px; top: 513px; width: 18px; height: 18px; z-index: 99;"></div></div></div><ol start="1"><li style="line-height: 18px;">public&nbsp;void&nbsp;batchInsertStudent(){&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Student&gt;&nbsp;ls&nbsp;=&nbsp;new&nbsp;ArrayList&lt;Student&gt;();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;5;i&nbsp;&lt;&nbsp;8;i++){&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Student&nbsp;student&nbsp;=&nbsp;new&nbsp;Student();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;student.setId(i);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;student.setName("maoyuanjun"&nbsp;+&nbsp;i);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;student.setSex("man"&nbsp;+&nbsp;i);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;student.setTel("tel"&nbsp;+&nbsp;i);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;student.setAddress("浙江省"&nbsp;+&nbsp;i);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ls.add(student);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;SqlSession&nbsp;session&nbsp;=&nbsp;SessionFactoryUtil.getSqlSessionFactory().openSession();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;session.insert("mybatisdemo.domain.Student.batchInsertStudent",&nbsp;ls);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;session.commit();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;session.close();&nbsp;&nbsp;</li><li style="line-height: 18px;">}&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;</li><li style="line-height: 18px;">&lt;insert&nbsp;id="batchInsertStudent"&nbsp;parameterType="java.util.List"&gt;&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;INSERT&nbsp;INTO&nbsp;STUDENT&nbsp;(id,name,sex,tel,address)&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;VALUES&nbsp;&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&lt;foreach&nbsp;collection="list"&nbsp;item="item"&nbsp;index="index"&nbsp;separator=","&nbsp;&gt;&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(#{item.id},#{item.name},#{item.sex},#{item.tel},#{item.address})&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/foreach&gt;&nbsp;&nbsp;</li><li style="line-height: 18px;">&lt;/insert&gt;&nbsp;&nbsp;</li></ol></div></div><div style="color: #362e2b; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: 18px;">2、批量修改session. insert (String string,Object o)</span></div><div style="color: #362e2b; font-family: Arial; line-height: 26px; background-color: #ffffff;"><div bg_plain"="" style="width: 693px;"><div><div><strong>[plain]</strong>&nbsp;<a href="http://blog.csdn.net/myjlvzlp/article/details/8434376#" title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-position: 0% 0%; background-repeat: no-repeat;">view plain</a><a href="http://blog.csdn.net/myjlvzlp/article/details/8434376#" title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-position: 0% 0%; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 649px; top: 1066px; width: 18px; height: 18px; z-index: 99;"></div></div></div><ol start="1"><li style="line-height: 18px;">实例1：&nbsp;&nbsp;</li><li style="line-height: 18px;">public&nbsp;void&nbsp;batchUpdateStudent(){&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Integer&gt;&nbsp;ls&nbsp;=&nbsp;new&nbsp;ArrayList&lt;Integer&gt;();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;2;i&nbsp;&lt;&nbsp;8;i++){&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ls.add(i);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;SqlSession&nbsp;session&nbsp;=&nbsp;SessionFactoryUtil.getSqlSessionFactory().openSession();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;session.insert("mybatisdemo.domain.Student.batchUpdateStudent",ls);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;session.commit();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;session.close();&nbsp;&nbsp;</li><li style="line-height: 18px;">}&nbsp;&nbsp;</li><li style="line-height: 18px;">&lt;update&nbsp;id="batchUpdateStudent"&nbsp;parameterType="java.util.List"&gt;&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;UPDATE&nbsp;STUDENT&nbsp;SET&nbsp;name&nbsp;=&nbsp;"5566"&nbsp;WHERE&nbsp;id&nbsp;IN&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&lt;foreach&nbsp;collection="list"&nbsp;item="item"&nbsp;index="index"&nbsp;open="("&nbsp;separator=","&nbsp;close=")"&nbsp;&gt;&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#{item}&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/foreach&gt;&nbsp;&nbsp;</li><li style="line-height: 18px;">&lt;/update&gt;&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;</li><li style="line-height: 18px;">实例2：&nbsp;&nbsp;</li><li style="line-height: 18px;">public&nbsp;void&nbsp;batchUpdateStudentWithMap(){&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Integer&gt;&nbsp;ls&nbsp;=&nbsp;new&nbsp;ArrayList&lt;Integer&gt;();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;2;i&nbsp;&lt;&nbsp;8;i++){&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ls.add(i);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;Map&lt;String,Object&gt;&nbsp;map&nbsp;=&nbsp;new&nbsp;HashMap&lt;String,Object&gt;();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;map.put("idList",&nbsp;ls);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;map.put("name",&nbsp;"mmao789");&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;SqlSession&nbsp;session&nbsp;=&nbsp;SessionFactoryUtil.getSqlSessionFactory().openSession();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;session.insert("mybatisdemo.domain.Student.batchUpdateStudentWithMap",map);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;session.commit();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;session.close();&nbsp;&nbsp;</li><li style="line-height: 18px;">}&nbsp;&nbsp;</li><li style="line-height: 18px;">&lt;update&nbsp;id="batchUpdateStudentWithMap"&nbsp;parameterType="java.util.Map"&nbsp;&gt;&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;UPDATE&nbsp;STUDENT&nbsp;SET&nbsp;name&nbsp;=&nbsp;#{name}&nbsp;WHERE&nbsp;id&nbsp;IN&nbsp;&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&lt;foreach&nbsp;collection="idList"&nbsp;index="index"&nbsp;item="item"&nbsp;open="("&nbsp;separator=","&nbsp;close=")"&gt;&nbsp;&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#{item}&nbsp;&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/foreach&gt;&nbsp;&nbsp;</li><li style="line-height: 18px;">&lt;/update&gt;&nbsp;&nbsp;</li></ol></div></div><div style="color: #362e2b; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: 18px;"><br /></span></div><div style="color: #362e2b; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: 18px;">3、批量删除session.delete(String string,Object o)</span></div><div style="color: #362e2b; font-family: Arial; line-height: 26px; background-color: #ffffff;"><div bg_plain"="" style="width: 693px;"><div><div><strong>[plain]</strong>&nbsp;<a href="http://blog.csdn.net/myjlvzlp/article/details/8434376#" title="view plain" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-position: 0% 0%; background-repeat: no-repeat;">view plain</a><a href="http://blog.csdn.net/myjlvzlp/article/details/8434376#" title="copy" style="padding: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-position: 0% 0%; background-repeat: no-repeat;">copy</a><div style="position: absolute; left: 649px; top: 1871px; width: 18px; height: 18px; z-index: 99;"></div></div></div><ol start="1"><li style="line-height: 18px;">public&nbsp;void&nbsp;batchDeleteStudent(){&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Integer&gt;&nbsp;ls&nbsp;=&nbsp;new&nbsp;ArrayList&lt;Integer&gt;();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;4;i&nbsp;&lt;&nbsp;8;i++){&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ls.add(i);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;SqlSession&nbsp;session&nbsp;=&nbsp;SessionFactoryUtil.getSqlSessionFactory().openSession();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;session.delete("mybatisdemo.domain.Student.batchDeleteStudent",ls);&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;session.commit();&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;session.close();&nbsp;&nbsp;</li><li style="line-height: 18px;">}&nbsp;&nbsp;</li><li style="line-height: 18px;">&lt;delete&nbsp;id="batchDeleteStudent"&nbsp;parameterType="java.util.List"&gt;&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;DELETE&nbsp;FROM&nbsp;STUDENT&nbsp;WHERE&nbsp;id&nbsp;IN&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&lt;foreach&nbsp;collection="list"&nbsp;index="index"&nbsp;item="item"&nbsp;open="("&nbsp;separator=","&nbsp;close=")"&gt;&nbsp;&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#{item}&nbsp;&nbsp;&nbsp;</li><li style="line-height: 18px;">&nbsp;&nbsp;&nbsp;&nbsp;&lt;/foreach&gt;&nbsp;&nbsp;</li><li style="line-height: 18px;">&lt;/delete&gt;&nbsp;&nbsp;</li></ol></div></div><div style="color: #362e2b; font-family: Arial; line-height: 26px; padding-top: 20px; background-color: #ffffff;"><p style="font-size: 12px;">转自：&nbsp;<span style="font-size: 14px;">http://blog.csdn.net/myjlvzlp/article/details/8434376</span></p></div><img src ="http://www.blogjava.net/jlin/aggbug/426196.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2015-07-13 16:39 <a href="http://www.blogjava.net/jlin/archive/2015/07/13/426196.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 多行转一列，一列转多行(转)</title><link>http://www.blogjava.net/jlin/archive/2015/01/23/422382.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Fri, 23 Jan 2015 03:46:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/archive/2015/01/23/422382.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/422382.html</wfw:comment><comments>http://www.blogjava.net/jlin/archive/2015/01/23/422382.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/422382.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/422382.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 有一个表，表名为tab_test，如下：一、多行转一列select id, vnum, to_char(wmsys.wm_concat(vname)) c&nbsp;from tab_test group by id,vnum;执行上述sql后，如下：二、一列转多行with a as (select '/ABC/AA/AD/ABD/JI/CC/ALSKD/ALDKDJ' id from dual)...&nbsp;&nbsp;<a href='http://www.blogjava.net/jlin/archive/2015/01/23/422382.html'>阅读全文</a><img src ="http://www.blogjava.net/jlin/aggbug/422382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2015-01-23 11:46 <a href="http://www.blogjava.net/jlin/archive/2015/01/23/422382.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL查询重复记录-转</title><link>http://www.blogjava.net/jlin/archive/2014/10/09/418564.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Thu, 09 Oct 2014 11:05:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/archive/2014/10/09/418564.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/418564.html</wfw:comment><comments>http://www.blogjava.net/jlin/archive/2014/10/09/418564.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/418564.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/418564.html</trackback:ping><description><![CDATA[<blockquote style="margin-right: 0px; padding-top: 10px; padding-right: 60px; padding-left: 60px; min-height: 35px; line-height: 1.6em; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #faf7ef;"><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">假设现有一张人员表（表名：Person），若想将姓名、身份证号、住址这三个字段完全相同的记录查找出来，使用</p><div style="margin: 0px; font-size: small; color: black; font-family: consolas, 'Courier New', courier, monospace; background-color: #ffffff;"><pre style="margin: 0em; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: consolas, 'Courier New', courier, monospace;"><span style="margin: 0px; padding: 0px; color: #606060;">   1:  </span><span style="margin: 0px; padding: 0px; color: #0000ff;">SELECT</span> p1.*   </pre><pre style="margin: 0em; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: consolas, 'Courier New', courier, monospace;"><span style="margin: 0px; padding: 0px; color: #606060;">   2:  </span><span style="margin: 0px; padding: 0px; color: #0000ff;">FROM</span> persons   p1,persons   p2   </pre><pre style="margin: 0em; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: consolas, 'Courier New', courier, monospace;"><span style="margin: 0px; padding: 0px; color: #606060;">   3:  </span><span style="margin: 0px; padding: 0px; color: #0000ff;">WHERE</span> p1.id&lt;&gt;p2.id   </pre><pre style="margin: 0em; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: consolas, 'Courier New', courier, monospace;"><span style="margin: 0px; padding: 0px; color: #606060;">   4:  </span><span style="margin: 0px; padding: 0px; color: #0000ff;">AND</span> p1.cardid   =   p2.cardid   </pre><pre style="margin: 0em; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: consolas, 'Courier New', courier, monospace;"><span style="margin: 0px; padding: 0px; color: #606060;">   5:  </span><span style="margin: 0px; padding: 0px; color: #0000ff;">AND</span> p1.pname   =   p2.pname   </pre><pre style="margin: 0em; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: consolas, 'Courier New', courier, monospace;"><span style="margin: 0px; padding: 0px; color: #606060;">   6:  </span><span style="margin: 0px; padding: 0px; color: #0000ff;">AND</span> p1.address   =   p2.address</pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;"></p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">可以实现该功能。</p></blockquote><blockquote style="margin-right: 0px; padding-top: 10px; padding-right: 60px; padding-left: 60px; min-height: 35px; line-height: 1.6em; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #faf7ef;"><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">删除重复记录的SQL语句</strong></p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">1.用rowid方法</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">2.用group by方法</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">3.用distinct方法</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">&nbsp;</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">1。用rowid方法</strong></p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">据据oracle带的rowid属性，进行判断，是否存在重复,语句如下：&nbsp;<br style="margin: 0px; padding: 0px;" /><strong style="margin: 0px; padding: 0px;">查数据:&nbsp;<br style="margin: 0px; padding: 0px;" /></strong>&nbsp;&nbsp;&nbsp;&nbsp; select * from table1 a where rowid !=(select&nbsp;&nbsp; max(rowid)&nbsp;&nbsp;&nbsp;<br style="margin: 0px; padding: 0px;" />&nbsp;&nbsp;&nbsp;&nbsp; from table1 b where a.name1=b.name1 and a.name2=b.name2......)&nbsp;<br style="margin: 0px; padding: 0px;" /><strong style="margin: 0px; padding: 0px;">删数据：</strong>&nbsp;<br style="margin: 0px; padding: 0px;" />&nbsp;&nbsp;&nbsp; delete&nbsp;&nbsp; from table1 a where rowid !=(select&nbsp;&nbsp; max(rowid)&nbsp;&nbsp;&nbsp;<br style="margin: 0px; padding: 0px;" />&nbsp;&nbsp;&nbsp;&nbsp; from table1 b where a.name1=b.name1 and a.name2=b.name2......)</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">2.group by方法</strong></p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">查数据:&nbsp;<br style="margin: 0px; padding: 0px;" />select count(num), max(name) from student --列出重复的记录数，并列出他的name属性&nbsp;<br style="margin: 0px; padding: 0px;" />group by num&nbsp;<br style="margin: 0px; padding: 0px;" />having count(num) &gt;1 --按num分组后找出表中num列重复，即出现次数大于一次&nbsp;<br style="margin: 0px; padding: 0px;" />删数据：&nbsp;<br style="margin: 0px; padding: 0px;" />delete from student&nbsp;<br style="margin: 0px; padding: 0px;" />group by num&nbsp;<br style="margin: 0px; padding: 0px;" />having count(num) &gt;1&nbsp;<br style="margin: 0px; padding: 0px;" />这样的话就把所有重复的都删除了。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">3.用distinct方法</strong>&nbsp;-对于小的表比较有用</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">create table table_new as&nbsp;&nbsp; select distinct *&nbsp;&nbsp; from table1 minux&nbsp;<br style="margin: 0px; padding: 0px;" />truncate table table1;&nbsp;<br style="margin: 0px; padding: 0px;" />insert into table1 select * from table_new;</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">&nbsp;</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;"><strong style="margin: 0px; padding: 0px;">查询及删除重复记录的方法大全</strong>&nbsp;<br style="margin: 0px; padding: 0px;" />1、查找表中多余的重复记录，重复记录是根据单个字段（peopleId）来判断</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">select * from people&nbsp;<br style="margin: 0px; padding: 0px;" />where peopleId in (select&nbsp; peopleId&nbsp; from&nbsp; people&nbsp; group&nbsp; by&nbsp; peopleId&nbsp; having&nbsp; count(peopleId) &gt; 1)</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">2、删除表中多余的重复记录，重复记录是根据单个字段（peopleId）来判断，只留有rowid最小的记录&nbsp;<br style="margin: 0px; padding: 0px;" />delete from people&nbsp;<br style="margin: 0px; padding: 0px;" />where peopleId&nbsp; in (select&nbsp; peopleId&nbsp; from people&nbsp; group&nbsp; by&nbsp; peopleId&nbsp;&nbsp; having&nbsp; count(peopleId) &gt; 1)&nbsp;<br style="margin: 0px; padding: 0px;" />and rowid not in (select min(rowid) from&nbsp; people&nbsp; group by peopleId&nbsp; having count(peopleId )&gt;1)</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">3、查找表中多余的重复记录（多个字段）&nbsp;<br style="margin: 0px; padding: 0px;" />select * from vitae a&nbsp;<br style="margin: 0px; padding: 0px;" />where (a.peopleId,a.seq) in&nbsp; (select peopleId,seq from vitae group by peopleId,seq&nbsp; having count(*) &gt; 1)</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">4、删除表中多余的重复记录（多个字段），只留有rowid最小的记录&nbsp;<br style="margin: 0px; padding: 0px;" />delete from vitae a&nbsp;<br style="margin: 0px; padding: 0px;" />where (a.peopleId,a.seq) in&nbsp; (select peopleId,seq from vitae group by peopleId,seq having count(*) &gt; 1)&nbsp;<br style="margin: 0px; padding: 0px;" />and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)&gt;1)</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">5、查找表中多余的重复记录（多个字段），不包含rowid最小的记录&nbsp;<br style="margin: 0px; padding: 0px;" />select * from vitae a&nbsp;<br style="margin: 0px; padding: 0px;" />where (a.peopleId,a.seq) in&nbsp; (select peopleId,seq from vitae group by peopleId,seq having count(*) &gt; 1)&nbsp;<br style="margin: 0px; padding: 0px;" />and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)&gt;1)</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">(二) 比方说 在A表中存在一个字段&#8220;name&#8221;，&nbsp;<br style="margin: 0px; padding: 0px;" />而且不同记录之间的&#8220;name&#8221;值有可能会相同，&nbsp;<br style="margin: 0px; padding: 0px;" />现在就是需要查询出在该表中的各记录之间，&#8220;name&#8221;值存在重复的项；&nbsp;<br style="margin: 0px; padding: 0px;" />Select Name,Count(*) From A Group By Name Having Count(*) &gt; 1</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">如果还查性别也相同大则如下:&nbsp;<br style="margin: 0px; padding: 0px;" />Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) &gt; 1</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">(三) 方法一</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">declare @max integer,@id integer</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) &gt;； 1</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">open cur_rows</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">fetch cur_rows into @id,@max</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">while @@fetch_status=0</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">begin</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">select @max = @max -1</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">set rowcount @max</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">delete from 表名 where 主字段 = @id</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">fetch cur_rows into @id,@max</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">end</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">close cur_rows</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">set rowcount 0</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">方法二</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">＂重复记录＂有两个意义上的重复记录，一是完全重复的记录，也即所有字段均重复的记录，二是部分关键字段重复的记录，比如Name字段重复，而其他字段不一定重复或都重复可以忽略。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">1、对于第一种重复，比较容易解决，使用</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">select distinct * from tableName</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">就可以得到无重复记录的结果集。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">如果该表需要删除重复的记录（重复记录保留1条），可以按以下方法删除</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">select distinct * into #Tmp from tableName</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">drop table tableName</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">select * into tableName from #Tmp</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">drop table #Tmp</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">发生这种重复的原因是表设计不周产生的，增加唯一索引列即可解决。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">2、这类重复问题通常要求保留重复记录中的第一条记录，操作方法如下</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">假设有重复的字段为Name,Address，要求得到这两个字段唯一的结果集</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">select identity(int,1,1) as autoID, * into #Tmp from tableName</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">select * from #Tmp where autoID in(select autoID from #tmp2)</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">最后一个select即得到了Name，Address不重复的结果集（但多了一个autoID字段，实际写时可以写在select子句中省去此列）</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">(四) 查询重复</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">select * from tablename where id in (</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">select id from tablename</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">group by id</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px;">having count(id) &gt; 1)</p></blockquote><img src ="http://www.blogjava.net/jlin/aggbug/418564.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2014-10-09 19:05 <a href="http://www.blogjava.net/jlin/archive/2014/10/09/418564.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORA-01034: ORACLE not available </title><link>http://www.blogjava.net/jlin/archive/2014/07/22/416094.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Tue, 22 Jul 2014 10:43:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/archive/2014/07/22/416094.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/416094.html</wfw:comment><comments>http://www.blogjava.net/jlin/archive/2014/07/22/416094.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/416094.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/416094.html</trackback:ping><description><![CDATA[ 解决方法一：

ERROR:

ORA-01034: ORACLE not available

ORA-27101: shared memory realm does not exist

进程 ID: 0

会话 ID: 0 序列号: 0

因为这个小小的错误，折腾了我好几个小时，特记录如下。

上网搜索了下解决方案，如下：

sqlplus "sys/password as sysdba"

连接成功，提示"已连接到空闲例程"

SQL> startup

ORACLE 例程已经启动。 

Total System Global Area  535662592 bytes

Fixed Size                  1375792 bytes

Variable Size             293601744 bytes

Database Buffers          234881024 bytes

Redo Buffers                5804032 bytes

数据库装载完毕。

ORA-03113: 通信通道的文件结尾

进程 ID: 5412

会话 ID: 5 序列号: 5

出现一个新错误：ORA-03113: 通信通道的文件结尾；分析可能由于昨晚数据库强制关闭，导致文件状态可能不一致，因为正常关闭数据库会同步校验各文件，使得重新启动的时候文件时间点一致。

找到解决方案如下：

SQL> conn / as sysdba

已连接到空闲例程。

SQL> startup mount

ORACLE 例程已经启动。 

Total System Global Area  535662592 bytes

Fixed Size                  1375792 bytes

Variable Size             293601744 bytes

Database Buffers          234881024 bytes

Redo Buffers                5804032 bytes

数据库装载完毕。

SQL> select * from v$log; 

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC

---------- ---------- ---------- ---------- ---------- ---------- ---

STATUS           FIRST_CHANGE# FIRST_TIME     NEXT_CHANGE# NEXT_TIME

---------------- ------------- -------------- ------------ -------------

         1          1        340   52428800        512          1 NO

INACTIVE               8474486 02-4月 -11          8522856 02-4月 -11 

         3          1        342   52428800        512          1 NO

INACTIVE               8555222 06-4月 -11          8565162 11-4月 -11 

         2          1        343   52428800        512          1 NO

CURRENT                8565162 11-4月 -11       2.8147E+14 

SQL> alter database open resetlogs

  2  ;

alter database open resetlogs

*

第 1 行出现错误:

ORA-01139: RESETLOGS 选项仅在不完全数据库恢复后有效 

SQL> recover database until time '2011-04-11 12:12:12'

完成介质恢复。

SQL> alter database open resetlogs; 

数据库已更改。 

SQL> shutdown

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup

ORACLE 例程已经启动。 

Total System Global Area  535662592 bytes

Fixed Size                  1375792 bytes

Variable Size             293601744 bytes

Database Buffers          234881024 bytes

Redo Buffers                5804032 bytes

数据库装载完毕。

数据库已经打开。

 

解决方法：二


我顶 字号：大 中  小 

在试图登录pl/sql时,输入用户名（system/pwd)后，Oracle报告下列错误：
ERROR:
 ORA-27101 Shared memory realm does not exist
 ORA-01034 ORACLE not available &<60;


查阅了相关
ORA-27101 Shared memory realm does not exist
 ORA-01034 ORACLE not available &<60;
的说明，解释为ORACLE_HOME或者ORACLE_SID设置不正确。
 但检查bash_profile以后没有发现错误;
錯誤點，沒有開啟oracle服務；
 解決辦法，直接開啟oracle相關數據庫的服務；
 或按照下面的步驟操作:
lsnrctl start
 sqlplus '/as sysdba'
 sql> startup
 emctl start dbconsole
 isqlplusctl start<img src ="http://www.blogjava.net/jlin/aggbug/416094.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2014-07-22 18:43 <a href="http://www.blogjava.net/jlin/archive/2014/07/22/416094.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【故障处理】ORA-00119: invalid specification for system parameter LOCAL_LISTENER</title><link>http://www.blogjava.net/jlin/archive/2014/07/22/416093.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Tue, 22 Jul 2014 10:38:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/archive/2014/07/22/416093.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/416093.html</wfw:comment><comments>http://www.blogjava.net/jlin/archive/2014/07/22/416093.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/416093.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/416093.html</trackback:ping><description><![CDATA[ 在windows下更换用户后数据库数据库无法启动
报如下错误：
ORA-00119: invalid specification for system parameter LOCAL_LISTENER
ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL'

问题处理过程：
1、修改tnsnames.ora文件，添加下面的语句：
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
2、然后就可以成功启动数据库了

另外还有一些关于监听无法监听到orcl实例，后来是通过oracle静态注册的方式完成的。

-- The End --

<img src ="http://www.blogjava.net/jlin/aggbug/416093.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2014-07-22 18:38 <a href="http://www.blogjava.net/jlin/archive/2014/07/22/416093.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle数据库导入导出命令(转)</title><link>http://www.blogjava.net/jlin/archive/2014/07/17/415961.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Thu, 17 Jul 2014 12:51:00 GMT</pubDate><guid>http://www.blogjava.net/jlin/archive/2014/07/17/415961.html</guid><wfw:comment>http://www.blogjava.net/jlin/comments/415961.html</wfw:comment><comments>http://www.blogjava.net/jlin/archive/2014/07/17/415961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jlin/comments/commentRss/415961.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jlin/services/trackbacks/415961.html</trackback:ping><description><![CDATA[<div style="font-size: 13px; font-weight: bold; margin-bottom: 10px; color: #232323; font-family: Verdana, Arial, helvetica, sans-seriff;"><a id="cb_post_title_url" href="http://www.cnblogs.com/fjfzhkb/archive/2007/09/03/879807.html" style="text-decoration: none; color: #56b6e9;">oracle数据库导入导出命令！</a></div><div id="cnblogs_post_body" style="margin-bottom: 20px; color: #232323; font-family: Verdana, Arial, helvetica, sans-seriff; line-height: 25px;"><p style="margin-top: 10px; margin-bottom: 10px;"><span style="color: #ff0000;"><span style="color: #000000;">Oracle数据导入导出imp/exp&nbsp;</span><span style="color: #000000;"><br /></span></span>功能：Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。<br />&nbsp;<br />大多情况都可以用Oracle数据导入导出完成数据的备份和还原（不会造成数据的丢失）。<br />&nbsp;Oracle有个好处，虽然你的电脑不是服务器，但是你装了oracle客户端，并建立了连接<br />&nbsp;（通过Net Configuration Assistant添加正确的服务命名，其实你可以想成是客户端与服务器端 修了条路，然后数据就可以被拉过来了）<br />&nbsp;这样你可以把数据导出到本地，虽然可能服务器离你很远。<br />&nbsp;你同样可以把dmp文件从本地导入到远处的数据库服务器中。<br />&nbsp;利用这个功能你可以构建俩个相同的数据库，一个用来测试，一个用来正式使用。<br />&nbsp;<br />执行环境：可以在SQLPLUS.EXE或者DOS（命令行）中执行，<br />&nbsp;DOS中可以执行时由于 在oracle 8i 中&nbsp; 安装目录\$ora10g\BIN被设置为全局路径，<br />&nbsp;该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。<br />&nbsp;oracle用java编写，我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件。<br />&nbsp;SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类，完成导入导出功能。<br />&nbsp;<br />下面介绍的是导入导出的实例，向导入导出看实例基本上就可以完成，因为导入导出很简单。<br />数据导出：<br />&nbsp;1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中<br />&nbsp;&nbsp; exp system/manager@TEST file=d:\daochu.dmp full=y<br />&nbsp;2 将数据库中system用户与sys用户的表导出<br />&nbsp;&nbsp; exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)<br />&nbsp;3 将数据库中的表table1 、table2导出<br />&nbsp;&nbsp; exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)&nbsp;<br />&nbsp;4 将数据库中的表table1中的字段filed1以"00"打头的数据导出<br />&nbsp;&nbsp; exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like&nbsp; '00%'\"<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp; 上面是常用的导出，对于压缩我不太在意，用winzip把dmp文件可以很好的压缩。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不过在上面命令后面 加上 compress=y&nbsp; 就可以了</p><p style="margin-top: 10px; margin-bottom: 10px;">数据的导入<br />&nbsp;1 将D:\daochu.dmp 中的数据导入 TEST数据库中。<br />&nbsp;&nbsp; imp system/manager@TEST&nbsp; file=d:\daochu.dmp<br />&nbsp;&nbsp; 上面可能有点问题，因为有的表已经存在，然后它就报错，对该表就不进行导入。<br />&nbsp;&nbsp; 在后面加上 ignore=y 就可以了。<br />&nbsp;2 将d:\daochu.dmp中的表table1 导入<br />&nbsp;imp system/manager@TEST&nbsp; file=d:\daochu.dmp&nbsp; tables=(table1)&nbsp;<br />&nbsp;<br />&nbsp;基本上上面的导入导出够用了。不少情况我是将表彻底删除，然后导入。<br />&nbsp;<br />注意：<br />&nbsp;你要有足够的权限，权限不够它会提示你。<br />&nbsp;数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。</p><p style="margin-top: 10px; margin-bottom: 10px;">&nbsp;</p><p style="margin-top: 10px; margin-bottom: 10px;">数据导出：<br />exp hkb/hkb@boss_14 full=y file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbfull.log;</p><p style="margin-top: 10px; margin-bottom: 10px;">导出注意事项：导出的是当前用户的的数据，当前用户如果有DBA的权限，则导出所有数据！</p><p style="margin-top: 10px; margin-bottom: 10px;">同名用户之间的数据导入：<br />imp hkb/hkb@xe&nbsp; file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbimp.log full=y</p><p style="margin-top: 10px; margin-bottom: 10px;">不同名之间的数据导入：<br />imp system/test@xe fromuser=hkb touser=hkb_new file=c:\orabackup\hkbfull.dmp</p><p style="margin-top: 10px; margin-bottom: 10px;">log=c:\orabackup\hkbimp.log;</p></div><img src ="http://www.blogjava.net/jlin/aggbug/415961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jlin/" target="_blank">fly</a> 2014-07-17 20:51 <a href="http://www.blogjava.net/jlin/archive/2014/07/17/415961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>