{"id":552,"date":"2011-03-26T16:37:21","date_gmt":"2011-03-26T15:37:21","guid":{"rendered":"https:\/\/d-mueller.de\/blog\/?p=552"},"modified":"2011-03-26T16:38:12","modified_gmt":"2011-03-26T15:38:12","slug":"mysql-limit-anzahl-zeilen-ohne-limit","status":"publish","type":"post","link":"https:\/\/d-mueller.de\/blog\/mysql-limit-anzahl-zeilen-ohne-limit\/","title":{"rendered":"MySQL Limit: Anzahl Ergebnisse ohne LIMIT herausfinden"},"content":{"rendered":"<p>In einigen Situation ist der geneigte Entwickler interessiert an der Gesamtzahl der Ergebnisse, die eine Abfrage ohne <i>LIMIT<\/i> &#8211; Klausel ergeben h\u00e4tte. Die Holzhammermethode in so einem Fall ist, die Abfrage einfach nochmal ohne LIMIT abzufeuern. Doch es geht besser. Und zwar mit folgendem Konstrukt:<\/p>\n<pre data-enlighter-language=\"sql\" class=\"EnlighterJSRAW\">\r\nSELECT SQL_CALC_FOUND_ROWS productid, price, stock \r\nFROM products \r\nWHERE price &gt; 100 \r\nLIMIT 10, 30;\r\n\r\nSELECT FOUND_ROWS();\r\n<\/pre>\n<p>Durch das &#8222;Einschleusen&#8220; von <i>SQL_CALC_FOUND_ROWS<\/i> k\u00f6nnen wir direkt danach mit <i>FOUND_ROWS()<\/i> die Gesamtzahl an Ergebnissen erfragen. F\u00fcr den Fall, dass nur ein Attribut selektiert werden soll, kann man auch direkt eine Abfrage draus machen:<\/p>\n<pre data-enlighter-language=\"sql\" class=\"EnlighterJSRAW\">\r\nSELECT SQL_CALC_FOUND_ROWS productid \r\nFROM products \r\nWHERE price &gt; 100 \r\nLIMIT 10, 30 \r\nUNION \r\nSELECT FOUND_ROWS();\r\n<\/pre>\n<p>Auf die Art und Weise wird an das Resultset als letzte Zeile noch die Gesamtzahl an Ergebnissen ohne LIMIT angehangen. Mehr dazu <a href=\"http:\/\/dev.mysql.com\/doc\/refman\/5.0\/en\/information-functions.html#function_found-rows\">direkt im MySQL Manual<\/a>.<\/p>\n<p>Zum Abschluss muss ich mich nochmal aufregen: Es gibt in MySQL keine M\u00f6glichkeit, alle Datens\u00e4tze ab einem gewissen offset zu bekommen. Etwas versch\u00e4mt <a href=\"http:\/\/dev.mysql.com\/doc\/refman\/5.0\/en\/select.html\">schl\u00e4gt das Handbuch vor<\/a>, in solchen F\u00e4llen zu unsch\u00f6nen Konstrukten dieser Art zu greifen:<\/p>\n<pre data-enlighter-language=\"sql\" class=\"EnlighterJSRAW\">\r\nSELECT * FROM tbl LIMIT 95,18446744073709551615;\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>In einigen Situation ist der geneigte Entwickler interessiert an der Gesamtzahl der Ergebnisse, die eine Abfrage ohne LIMIT &#8211; Klausel ergeben h\u00e4tte. Die Holzhammermethode in so einem Fall ist, die Abfrage einfach nochmal ohne LIMIT abzufeuern. Doch es geht besser. &hellip; <a href=\"https:\/\/d-mueller.de\/blog\/mysql-limit-anzahl-zeilen-ohne-limit\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,8,3],"tags":[],"class_list":["post-552","post","type-post","status-publish","format-standard","hentry","category-datenbanken","category-quicktips","category-webdev"],"_links":{"self":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts\/552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/comments?post=552"}],"version-history":[{"count":0,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/posts\/552\/revisions"}],"wp:attachment":[{"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/media?parent=552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/categories?post=552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/d-mueller.de\/blog\/wp-json\/wp\/v2\/tags?post=552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}