{"id":3306,"date":"2014-10-22T23:30:19","date_gmt":"2014-10-23T07:30:19","guid":{"rendered":"http:\/\/www.mysqltutorial.org\/?page_id=3306"},"modified":"2023-12-29T06:27:04","modified_gmt":"2023-12-29T13:27:04","slug":"mysql-row_number-emulation","status":"publish","type":"page","link":"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/","title":{"rendered":"MySQL ROW_NUMBER, This is How You Emulate It"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: in this tutorial, you will learn how to&nbsp;emulate the <code>row_number()<\/code> function in MySQL. We will show you how to add a sequential integer to each row or group of rows in the result set.<\/p>\n\n\n\n<p class=\"note\">Notice that MySQL has supported the <code><a href=\"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-function\/\">ROW_NUMBER()<\/a><\/code> since version 8.0. If you use MySQL 8.0 or later, refer to the  <code><a href=\"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-function\/\">ROW_NUMBER()<\/a><\/code> function tutorial. Otherwise, you can continue with the tutorial to learn how to emulate the <code>ROW_NUMBER()<\/code> function.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction to the ROW_NUMBER() function<\/h2>\n\n\n\n<p>The&nbsp; <code><a href=\"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number\/\">ROW_NUMBER()<\/a><\/code> is a <a href=\"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/\">window function<\/a> that returns a sequential number for each row, starting from 1 for the first row.<\/p>\n\n\n\n<p>Before version 8.0, MySQL did not support <code>ROW_NUMBER()<\/code> function like <a href=\"http:\/\/www.sqlservertutorial.net\/sql-server-window-functions\/sql-server-row_number-function\/\">Microsoft SQL Server<\/a>, <a href=\"https:\/\/www.oracletutorial.com\/oracle-analytic-functions\/oracle-row_number\/\">Oracle<\/a>, or <a href=\"http:\/\/www.postgresqltutorial.com\">PostgreSQL<\/a>. Fortunately, MySQL provides session variables that you can use to emulate the\u00a0 <code>ROW_NUMBER()<\/code> function.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">MySQL ROW_NUMBER &#8211; adding a row number for each row<\/h2>\n\n\n\n<p>To emulate the&nbsp; <code>ROW_NUMBER()<\/code> function, you have to use session <a href=\"https:\/\/www.mysqltutorial.org\/mysql-basics\/mysql-variables\/\">variables<\/a> in the query.<\/p>\n\n\n\n<p>The following statements return five employees from the\u00a0 <code>employees<\/code> table and add a row number to each row, starting from 1.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">SET<\/span> @row_number = <span class=\"hljs-number\">0<\/span>; \n\n<span class=\"hljs-keyword\">SELECT<\/span> \n    (@row_number:=@row_number + <span class=\"hljs-number\">1<\/span>) <span class=\"hljs-keyword\">AS<\/span> <span class=\"hljs-keyword\">num<\/span>, \n    firstName, \n    lastName\n<span class=\"hljs-keyword\">FROM<\/span>\n    employees\n<span class=\"hljs-keyword\">ORDER<\/span> <span class=\"hljs-keyword\">BY<\/span> firstName, lastName    \n<span class=\"hljs-keyword\">LIMIT<\/span> <span class=\"hljs-number\">5<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"182\" height=\"118\" src=\"https:\/\/www.mysqltutorial.org\/wp-content\/uploads\/2019\/08\/mysql-row_number-emulation.png\" alt=\"\" class=\"wp-image-7882\"\/><\/figure>\n\n\n\n<p>In this example:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>First, define a variable named&nbsp; <code>@row_number<\/code> and set its value to 0. The <code>@row_number<\/code> is a session variable indicated by the <code>@<\/code> prefix.<\/li>\n\n\n\n<li>Then, <a href=\"https:\/\/www.mysqltutorial.org\/mysql-basics\/mysql-select-from\/\">select<\/a> data from the table <code>employees<\/code> and increase the value of the&nbsp; <code>@row_number<\/code> variable by one for each row. We use the <code><a href=\"https:\/\/www.mysqltutorial.org\/mysql-basics\/mysql-limit\/\">LIMIT<\/a><\/code> clause to constrain a number of returned rows to five.<\/li>\n<\/ul>\n\n\n\n<p>Another technique is to use a session variable as a <a href=\"https:\/\/www.mysqltutorial.org\/mysql-basics\/mysql-derived-table\/\">derived table<\/a> and <a href=\"https:\/\/www.mysqltutorial.org\/mysql-basics\/mysql-cross-join\/\">cross join<\/a> it with the main table. See the following query:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">SELECT<\/span> \n    (@row_number:=@row_number + <span class=\"hljs-number\">1<\/span>) <span class=\"hljs-keyword\">AS<\/span> <span class=\"hljs-keyword\">num<\/span>, \n    firstName, \n    lastName\n<span class=\"hljs-keyword\">FROM<\/span>\n    employees,\n    (<span class=\"hljs-keyword\">SELECT<\/span> @row_number:=<span class=\"hljs-number\">0<\/span>) <span class=\"hljs-keyword\">AS<\/span> t\n<span class=\"hljs-keyword\">ORDER<\/span> <span class=\"hljs-keyword\">BY<\/span> \n    firstName, \n    lastName    \n<span class=\"hljs-keyword\">LIMIT<\/span> <span class=\"hljs-number\">5<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Notice that the <a title=\"MySQL Alias\" href=\"https:\/\/www.mysqltutorial.org\/mysql-basics\/mysql-alias\/\">derived table must have its own alias<\/a> to make the query syntactically correct.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">MySQL ROW_NUMBER &#8211; adding a row number to each group<\/h2>\n\n\n\n<p>How about the\u00a0 <code>ROW_NUMBER() OVER(PARITION BY ... )<\/code> functionality? For example, what if you\u00a0want to add a row number to each group, and it is reset for every new group?<\/p>\n\n\n\n<p>Let&#8217;s take a look at the <code>payments<\/code> table from the <a href=\"https:\/\/www.mysqltutorial.org\/getting-started-with-mysql\/mysql-sample-database\/\">sample database<\/a>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"144\" height=\"124\" src=\"https:\/\/www.mysqltutorial.org\/wp-content\/uploads\/2019\/08\/payments.png\" alt=\"\" class=\"wp-image-8034\"\/><\/figure>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">SELECT<\/span>\n    customerNumber, \n    paymentDate, \n    amount\n<span class=\"hljs-keyword\">FROM<\/span>\n    payments\n<span class=\"hljs-keyword\">ORDER<\/span> <span class=\"hljs-keyword\">BY<\/span> \n   customerNumber;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"293\" height=\"196\" src=\"https:\/\/www.mysqltutorial.org\/wp-content\/uploads\/2014\/10\/mysql-row_number-payments-table.jpg\" alt=\"mysql row_number payments table\" class=\"wp-image-3968\" title=\"MySQL row_number payments table\"\/><\/figure>\n\n\n\n<p>Suppose for each customer, you want to add a row number, and the row number is reset whenever the customer number changes.<\/p>\n\n\n\n<p>To achieve this, you have to use two session variables, one for the row number and the other for storing the old customer number to compare it with the current one as the following query:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">SET<\/span> @row_number := <span class=\"hljs-number\">0<\/span>;\n\n<span class=\"hljs-keyword\">SELECT<\/span> \n    @row_number:=<span class=\"hljs-keyword\">CASE<\/span>\n        <span class=\"hljs-keyword\">WHEN<\/span> @customer_no = customerNumber \n\t\t\t<span class=\"hljs-keyword\">THEN<\/span> @row_number + <span class=\"hljs-number\">1<\/span>\n        <span class=\"hljs-keyword\">ELSE<\/span> <span class=\"hljs-number\">1<\/span>\n    <span class=\"hljs-keyword\">END<\/span> <span class=\"hljs-keyword\">AS<\/span> <span class=\"hljs-keyword\">num<\/span>,\n    @customer_no:=customerNumber customerNumber,\n    paymentDate,\n    amount\n<span class=\"hljs-keyword\">FROM<\/span>\n    payments\n<span class=\"hljs-keyword\">ORDER<\/span> <span class=\"hljs-keyword\">BY<\/span> customerNumber;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"358\" height=\"266\" src=\"https:\/\/www.mysqltutorial.org\/wp-content\/uploads\/2014\/10\/mysql-row_number-per-group.jpg\" alt=\"mysql row_number per group\" class=\"wp-image-3967\" title=\"mysql row_number per group\" srcset=\"https:\/\/www.mysqltutorial.org\/wp-content\/uploads\/2014\/10\/mysql-row_number-per-group.jpg 358w, https:\/\/www.mysqltutorial.org\/wp-content\/uploads\/2014\/10\/mysql-row_number-per-group-300x223.jpg 300w\" sizes=\"auto, (max-width: 358px) 100vw, 358px\" \/><\/figure>\n\n\n\n<p>In this example, we use the <code><a href=\"https:\/\/www.mysqltutorial.org\/mysql-control-flow-functions\/mysql-case-function\/\">CASE<\/a><\/code> expression in the query. If the customer number remains the same, we increase the&nbsp; <code>@row_number<\/code> variable, otherwise, we reset it to one.<\/p>\n\n\n\n<p>This query uses a <a href=\"https:\/\/www.mysqltutorial.org\/mysql-basics\/mysql-derived-table\/\">derived table<\/a> and the <a href=\"https:\/\/www.mysqltutorial.org\/mysql-basics\/mysql-cross-join\/\">cross join<\/a> to produce the same result.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">SELECT<\/span> \n    @row_number:=<span class=\"hljs-keyword\">CASE<\/span>\n        <span class=\"hljs-keyword\">WHEN<\/span> @customer_no = customerNumber \n          <span class=\"hljs-keyword\">THEN<\/span> \n              @row_number + <span class=\"hljs-number\">1<\/span>\n          <span class=\"hljs-keyword\">ELSE<\/span> \n               <span class=\"hljs-number\">1<\/span>\n        <span class=\"hljs-keyword\">END<\/span> <span class=\"hljs-keyword\">AS<\/span> <span class=\"hljs-keyword\">num<\/span>,\n    @customer_no:=customerNumber CustomerNumber,\n    paymentDate,\n    amount\n<span class=\"hljs-keyword\">FROM<\/span>\n    payments,\n    (<span class=\"hljs-keyword\">SELECT<\/span> @customer_no:=<span class=\"hljs-number\">0<\/span>,@row_number:=<span class=\"hljs-number\">0<\/span>) <span class=\"hljs-keyword\">as<\/span> t\n<span class=\"hljs-keyword\">ORDER<\/span> <span class=\"hljs-keyword\">BY<\/span> \n    customerNumber;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this tutorial, you have learned two ways to emulate the <code>row_number<\/code> window function in MySQL.<\/p>\n<div class=\"helpful-block-content\" data-title=\"\">\n\t<header>\n\t\t<div class=\"wth-question\">Was this tutorial helpful? <\/div>\n\t\t<div class=\"wth-thumbs\">\n\t\t\t<button\n\t\t\t\tdata-post=\"3306\"\n\t\t\t\tdata-post-url=\"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/\"\n\t\t\t\tdata-post-title=\"MySQL ROW_NUMBER, This is How You Emulate It\"\n\t\t\t\tdata-response=\"1\"\n\t\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t\t<\/button>\n\n\t\t\t<button\n\t\t\t\tdata-response=\"0\"\n\t\t\t\tdata-post=\"3306\"\n\t\t\t\tdata-post-url=\"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/\"\n\t\t\t\tdata-post-title=\"MySQL ROW_NUMBER, This is How You Emulate It\"\n\t\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t<\/header>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\n\t\t\t<button class=\"btn btn-primary wth-btn-submit\">Send<\/button>\n\t\t\t<button class=\"btn wth-btn-cancel\">Cancel<\/button>\n\t\t\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, we will show you a useful tip that emulates the row_number function in MySQL.<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":6941,"menu_order":11,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-3306","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>MySQL row_number, This is How You Emulate It.<\/title>\n<meta name=\"description\" content=\"You will learn how to emulate the row_number function in MySQL 5.x and how to add a row number to each row in the result set.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MySQL row_number, This is How You Emulate It.\" \/>\n<meta property=\"og:description\" content=\"You will learn how to emulate the row_number function in MySQL 5.x and how to add a row number to each row in the result set.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/\" \/>\n<meta property=\"og:site_name\" content=\"MySQL Tutorial\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-29T13:27:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mysqltutorial.org\/wp-content\/uploads\/2019\/08\/mysql-row_number-emulation.png\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mysqltutorial.org\\\/mysql-window-functions\\\/mysql-row_number-emulation\\\/\",\"url\":\"https:\\\/\\\/www.mysqltutorial.org\\\/mysql-window-functions\\\/mysql-row_number-emulation\\\/\",\"name\":\"MySQL row_number, This is How You Emulate It.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mysqltutorial.org\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mysqltutorial.org\\\/mysql-window-functions\\\/mysql-row_number-emulation\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mysqltutorial.org\\\/mysql-window-functions\\\/mysql-row_number-emulation\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mysqltutorial.org\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/mysql-row_number-emulation.png\",\"datePublished\":\"2014-10-23T07:30:19+00:00\",\"dateModified\":\"2023-12-29T13:27:04+00:00\",\"description\":\"You will learn how to emulate the row_number function in MySQL 5.x and how to add a row number to each row in the result set.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mysqltutorial.org\\\/mysql-window-functions\\\/mysql-row_number-emulation\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mysqltutorial.org\\\/mysql-window-functions\\\/mysql-row_number-emulation\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.mysqltutorial.org\\\/mysql-window-functions\\\/mysql-row_number-emulation\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mysqltutorial.org\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/mysql-row_number-emulation.png\",\"contentUrl\":\"https:\\\/\\\/www.mysqltutorial.org\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/mysql-row_number-emulation.png\",\"width\":182,\"height\":118},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mysqltutorial.org\\\/mysql-window-functions\\\/mysql-row_number-emulation\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mysqltutorial.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MySQL Window Functions\",\"item\":\"https:\\\/\\\/www.mysqltutorial.org\\\/mysql-window-functions\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"MySQL ROW_NUMBER, This is How You Emulate It\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mysqltutorial.org\\\/#website\",\"url\":\"https:\\\/\\\/www.mysqltutorial.org\\\/\",\"name\":\"MySQL Tutorial\",\"description\":\"A comprehensive MySQL Tutorial\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mysqltutorial.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MySQL row_number, This is How You Emulate It.","description":"You will learn how to emulate the row_number function in MySQL 5.x and how to add a row number to each row in the result set.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/","og_locale":"en_US","og_type":"article","og_title":"MySQL row_number, This is How You Emulate It.","og_description":"You will learn how to emulate the row_number function in MySQL 5.x and how to add a row number to each row in the result set.","og_url":"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/","og_site_name":"MySQL Tutorial","article_modified_time":"2023-12-29T13:27:04+00:00","og_image":[{"url":"https:\/\/www.mysqltutorial.org\/wp-content\/uploads\/2019\/08\/mysql-row_number-emulation.png","type":"","width":"","height":""}],"twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/","url":"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/","name":"MySQL row_number, This is How You Emulate It.","isPartOf":{"@id":"https:\/\/www.mysqltutorial.org\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/#primaryimage"},"image":{"@id":"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mysqltutorial.org\/wp-content\/uploads\/2019\/08\/mysql-row_number-emulation.png","datePublished":"2014-10-23T07:30:19+00:00","dateModified":"2023-12-29T13:27:04+00:00","description":"You will learn how to emulate the row_number function in MySQL 5.x and how to add a row number to each row in the result set.","breadcrumb":{"@id":"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/#primaryimage","url":"https:\/\/www.mysqltutorial.org\/wp-content\/uploads\/2019\/08\/mysql-row_number-emulation.png","contentUrl":"https:\/\/www.mysqltutorial.org\/wp-content\/uploads\/2019\/08\/mysql-row_number-emulation.png","width":182,"height":118},{"@type":"BreadcrumbList","@id":"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/mysql-row_number-emulation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mysqltutorial.org\/"},{"@type":"ListItem","position":2,"name":"MySQL Window Functions","item":"https:\/\/www.mysqltutorial.org\/mysql-window-functions\/"},{"@type":"ListItem","position":3,"name":"MySQL ROW_NUMBER, This is How You Emulate It"}]},{"@type":"WebSite","@id":"https:\/\/www.mysqltutorial.org\/#website","url":"https:\/\/www.mysqltutorial.org\/","name":"MySQL Tutorial","description":"A comprehensive MySQL Tutorial","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mysqltutorial.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/www.mysqltutorial.org\/wp-json\/wp\/v2\/pages\/3306","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mysqltutorial.org\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.mysqltutorial.org\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.mysqltutorial.org\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mysqltutorial.org\/wp-json\/wp\/v2\/comments?post=3306"}],"version-history":[{"count":5,"href":"https:\/\/www.mysqltutorial.org\/wp-json\/wp\/v2\/pages\/3306\/revisions"}],"predecessor-version":[{"id":13580,"href":"https:\/\/www.mysqltutorial.org\/wp-json\/wp\/v2\/pages\/3306\/revisions\/13580"}],"up":[{"embeddable":true,"href":"https:\/\/www.mysqltutorial.org\/wp-json\/wp\/v2\/pages\/6941"}],"wp:attachment":[{"href":"https:\/\/www.mysqltutorial.org\/wp-json\/wp\/v2\/media?parent=3306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}