<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Oracle ROWNUM &#8211; 記下來</title>
	<atom:link href="https://noter.tw/tag/oracle-rownum/feed/" rel="self" type="application/rss+xml" />
	<link>https://noter.tw</link>
	<description>一路上踩到的坑、遇到的問題，一點一滴記下來，希望能幫助到需要的人~</description>
	<lastBuildDate>Sat, 20 Jan 2024 10:23:28 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.3</generator>

<image>
	<url>https://noter.tw/wp-content/uploads/cropped-old-1130742_1920-1-32x32.jpg</url>
	<title>Oracle ROWNUM &#8211; 記下來</title>
	<link>https://noter.tw</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Oracle, MySQL 分組編號與全排序編號 row_number, over, partition by</title>
		<link>https://noter.tw/12015/oracle-%e5%88%86%e7%b5%84%e7%b7%a8%e8%99%9f%e8%88%87%e5%85%a8%e6%8e%92%e5%ba%8f%e7%b7%a8%e8%99%9f-row_number-over-partition-by/</link>
					<comments>https://noter.tw/12015/oracle-%e5%88%86%e7%b5%84%e7%b7%a8%e8%99%9f%e8%88%87%e5%85%a8%e6%8e%92%e5%ba%8f%e7%b7%a8%e8%99%9f-row_number-over-partition-by/#respond</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Fri, 17 Nov 2023 04:02:11 +0000</pubDate>
				<category><![CDATA[資料庫]]></category>
		<category><![CDATA[Oracle 連續編號]]></category>
		<category><![CDATA[Oracle ROWNUM]]></category>
		<category><![CDATA[row_number()]]></category>
		<category><![CDATA[partition by]]></category>
		<category><![CDATA[over]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[MySQL 分組編號]]></category>
		<category><![CDATA[mariadb]]></category>
		<category><![CDATA[MySQL 連續編號]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[MariaDB 分組編號]]></category>
		<category><![CDATA[Oracle 編號]]></category>
		<category><![CDATA[Oracle 分組編號]]></category>
		<category><![CDATA[Oracle 序號]]></category>
		<guid isPermaLink="false">https://noter.tw/?p=12015</guid>

					<description><![CDATA[<p>留給自己的一 memo，使用 Oracle 匯出資料的時候常常需要加上分組編號，這邊簡單記錄一下 Oracle 分組編號的使用方法。</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/12015/oracle-%e5%88%86%e7%b5%84%e7%b7%a8%e8%99%9f%e8%88%87%e5%85%a8%e6%8e%92%e5%ba%8f%e7%b7%a8%e8%99%9f-row_number-over-partition-by/" data-wpel-link="internal">Oracle, MySQL 分組編號與全排序編號 row_number, over, partition by</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>留給自己的一 memo，使用 Oracle 匯出資料的時候常常需要加上分組編號，這邊簡單記錄一下使用方法。</p>



<span id="more-12015"></span>



<h2 class="wp-block-heading para">使用 ROWNUM 編號 (Oracle)</h2>



<p>首先第一種情況是要從頭到尾做連續編號，如果使用 ROWNUM 做的話，會發現只要加了 ORDER BY，序號不會跟著順序重新編號，例如</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT rownum, t.* FROM TEST t</pre>



<p>如果只是要簡單編號不考慮資料排序 (order by) 直接使用 ROWNUM 即可(下表左)，若加上排序後如下表右，順序並不會跟著變動。</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-table"><table><tbody><tr><td class="has-text-align-center" data-align="center">1</td><td>B000636</td><td>無</td></tr><tr><td class="has-text-align-center" data-align="center">2</td><td>B000637</td><td>無</td></tr><tr><td class="has-text-align-center" data-align="center">3</td><td>F00001</td><td>原始</td></tr><tr><td class="has-text-align-center" data-align="center">4</td><td>F00001</td><td>分類</td></tr><tr><td class="has-text-align-center" data-align="center">5</td><td>F00002</td><td>原始</td></tr><tr><td class="has-text-align-center" data-align="center">6</td><td>F00003</td><td>分類</td></tr></tbody></table><figcaption class="wp-element-caption">使用 ROWNUM 加上編號</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-table"><table><tbody><tr><td class="has-text-align-center" data-align="center">6</td><td>F00003</td><td>分類</td></tr><tr><td class="has-text-align-center" data-align="center">5</td><td>F00002</td><td>原始</td></tr><tr><td class="has-text-align-center" data-align="center">4</td><td>F00001</td><td>原始</td></tr><tr><td class="has-text-align-center" data-align="center">3</td><td>F00001</td><td>分類</td></tr><tr><td class="has-text-align-center" data-align="center">2</td><td>B000637</td><td>無</td></tr><tr><td class="has-text-align-center" data-align="center">1</td><td>B000636</td><td>無</td></tr></tbody></table><figcaption class="wp-element-caption">加上 ORDER BY 後</figcaption></figure>
</div>
</div>



<h2 class="wp-block-heading para">使用 row_number(), over() 全排序編號</h2>



<p>這種時候借助 row_number() 與 over() 的幫忙就可以完成</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT row_number() over (order by no desc) seq, t.* FROM TEST t</pre>



<figure class="wp-block-table"><table><tbody><tr><td class="has-text-align-center" data-align="center">1</td><td>F00003</td><td>分類</td></tr><tr><td class="has-text-align-center" data-align="center">2</td><td>F00002</td><td>原始</td></tr><tr><td class="has-text-align-center" data-align="center">3</td><td>F00001</td><td>原始</td></tr><tr><td class="has-text-align-center" data-align="center">4</td><td>F00001</td><td>分類</td></tr><tr><td class="has-text-align-center" data-align="center">5</td><td>B000637</td><td>無</td></tr><tr><td class="has-text-align-center" data-align="center">6</td><td>B000636</td><td>無</td></tr></tbody></table><figcaption class="wp-element-caption">使用 row_number() over () 後</figcaption></figure>



<h2 class="wp-block-heading para">使用 row_number(), over(partition by) 做 Oracle 分組編號</h2>



<p>還有一種常見的需求是做分組編號，就是遇到同類型的時候，可以標註這是該類型的編號幾，只要在 over 中加入 partition by 要用來當作分組依據的欄位即可</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT t.no, row_number() over (partition by t.no order by t.no asc) seq, t.type FROM TEST t</pre>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-2 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-table"><table><tbody><tr><td>B000636</td><td>1</td><td>無</td></tr><tr><td>B000637</td><td>1</td><td>無</td></tr><tr><td>F00001</td><td>1</td><td>原始</td></tr><tr><td>F00001</td><td>2</td><td>分類</td></tr><tr><td>F00002</td><td>1</td><td>原始</td></tr><tr><td>F00003</td><td>1</td><td>分類</td></tr></tbody></table><figcaption class="wp-element-caption">加上分組編號</figcaption></figure>



<p>類似需求備忘：<a href="https://tomkuo139.blogspot.com/2011/11/oracle-rownum-rownumber-rank-denserank.html" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right">Oracle rownum / row_number / rank / dense_rank 這四個的差異<span class="wpel-icon wpel-image wpel-icon-6"></span></a></p>
</div>
</div>



<p>延伸閱讀：<br><a href="https://noter.tw/12503/mariadb-json_extract-%e5%be%9e-json-%e6%ac%84%e4%bd%8d%e5%8f%96%e5%80%bc/" data-wpel-link="internal">MariaDB JSON_EXTRACT: 從 JSON 欄位取值</a></p>


<h2 class="para">與 Oracle 相關的文章</h2><ul><li><span style="font-size: 1em;"><a href="https://noter.tw/12015/oracle-%e5%88%86%e7%b5%84%e7%b7%a8%e8%99%9f%e8%88%87%e5%85%a8%e6%8e%92%e5%ba%8f%e7%b7%a8%e8%99%9f-row_number-over-partition-by/" data-wpel-link="internal">Oracle, MySQL 分組編號與全排序編號 row_number, over, partition by</a></span></li><li><span style="font-size: 1em;"><a href="https://noter.tw/9109/oracle-sqlplus-export-results-to-file/" data-wpel-link="internal">使用 Oracle sqlplus 將查詢結果匯出到檔案</a></span></li><li><span style="font-size: 1em;"><a href="https://noter.tw/8540/database/" data-wpel-link="internal">資料庫問題彙整</a></span></li><li><span style="font-size: 1em;"><a href="https://noter.tw/2711/oracle-%e5%8c%af%e5%85%a5%e5%8c%af%e5%87%ba-excel-%e9%80%8f%e9%81%8e-sql-developer/" data-wpel-link="internal">Oracle 匯入/匯出 Excel (透過 SQL Developer)</a></span></li><li><span style="font-size: 1em;"><a href="https://noter.tw/2714/%e5%ae%98%e6%96%b9-client-oracle-sql-developer-%e5%ae%89%e8%a3%9d%e6%95%99%e5%ad%b8/" data-wpel-link="internal">官方 Client &#8211; Oracle SQL Developer 安裝教學</a></span></li><li><span style="font-size: 1em;"><a href="https://noter.tw/2371/oracle-sqlplus-import-sql-file/" data-wpel-link="internal">Oracle 使用 sqlplus 匯入 SQL 檔案</a></span></li></ul><p>這篇文章 <a rel="nofollow" href="https://noter.tw/12015/oracle-%e5%88%86%e7%b5%84%e7%b7%a8%e8%99%9f%e8%88%87%e5%85%a8%e6%8e%92%e5%ba%8f%e7%b7%a8%e8%99%9f-row_number-over-partition-by/" data-wpel-link="internal">Oracle, MySQL 分組編號與全排序編號 row_number, over, partition by</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/12015/oracle-%e5%88%86%e7%b5%84%e7%b7%a8%e8%99%9f%e8%88%87%e5%85%a8%e6%8e%92%e5%ba%8f%e7%b7%a8%e8%99%9f-row_number-over-partition-by/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
