mirror of https://github.com/postgres/postgres
Fix subsection ordering (DISTINCT should be described before LIMIT).
This commit is contained in:
parent
852b4ae5c2
commit
a7abae4954
|
@ -1,5 +1,5 @@
|
||||||
<!--
|
<!--
|
||||||
$PostgreSQL: pgsql/doc/src/sgml/ref/select.sgml,v 1.79 2005/01/04 03:58:16 tgl Exp $
|
$PostgreSQL: pgsql/doc/src/sgml/ref/select.sgml,v 1.80 2005/01/04 08:59:45 tgl Exp $
|
||||||
PostgreSQL documentation
|
PostgreSQL documentation
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
@ -696,6 +696,45 @@ SELECT name FROM distributors ORDER BY code;
|
||||||
</para>
|
</para>
|
||||||
</refsect2>
|
</refsect2>
|
||||||
|
|
||||||
|
<refsect2 id="sql-distinct">
|
||||||
|
<title id="sql-distinct-title"><literal>DISTINCT</literal> Clause</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
If <literal>DISTINCT</> is specified, all duplicate rows are
|
||||||
|
removed from the result set (one row is kept from each group of
|
||||||
|
duplicates). <literal>ALL</> specifies the opposite: all rows are
|
||||||
|
kept; that is the default.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
<literal>DISTINCT ON ( <replaceable
|
||||||
|
class="parameter">expression</replaceable> [, ...] )</literal>
|
||||||
|
keeps only the first row of each set of rows where the given
|
||||||
|
expressions evaluate to equal. The <literal>DISTINCT ON</literal>
|
||||||
|
expressions are interpreted using the same rules as for
|
||||||
|
<literal>ORDER BY</> (see above). Note that the <quote>first
|
||||||
|
row</quote> of each set is unpredictable unless <literal>ORDER
|
||||||
|
BY</> is used to ensure that the desired row appears first. For
|
||||||
|
example,
|
||||||
|
<programlisting>
|
||||||
|
SELECT DISTINCT ON (location) location, time, report
|
||||||
|
FROM weather_reports
|
||||||
|
ORDER BY location, time DESC;
|
||||||
|
</programlisting>
|
||||||
|
retrieves the most recent weather report for each location. But
|
||||||
|
if we had not used <literal>ORDER BY</> to force descending order
|
||||||
|
of time values for each location, we'd have gotten a report from
|
||||||
|
an unpredictable time for each location.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
The <literal>DISTINCT ON</> expression(s) must match the leftmost
|
||||||
|
<literal>ORDER BY</> expression(s). The <literal>ORDER BY</> clause
|
||||||
|
will normally contain additional expression(s) that determine the
|
||||||
|
desired precedence of rows within each <literal>DISTINCT ON</> group.
|
||||||
|
</para>
|
||||||
|
</refsect2>
|
||||||
|
|
||||||
<refsect2 id="SQL-LIMIT">
|
<refsect2 id="SQL-LIMIT">
|
||||||
<title id="sql-limit-title"><literal>LIMIT</literal> Clause</title>
|
<title id="sql-limit-title"><literal>LIMIT</literal> Clause</title>
|
||||||
|
|
||||||
|
@ -739,45 +778,6 @@ OFFSET <replaceable class="parameter">start</replaceable>
|
||||||
</para>
|
</para>
|
||||||
</refsect2>
|
</refsect2>
|
||||||
|
|
||||||
<refsect2 id="sql-distinct">
|
|
||||||
<title id="sql-distinct-title"><literal>DISTINCT</literal> Clause</title>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
If <literal>DISTINCT</> is specified, all duplicate rows are
|
|
||||||
removed from the result set (one row is kept from each group of
|
|
||||||
duplicates). <literal>ALL</> specifies the opposite: all rows are
|
|
||||||
kept; that is the default.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
<literal>DISTINCT ON ( <replaceable
|
|
||||||
class="parameter">expression</replaceable> [, ...] )</literal>
|
|
||||||
keeps only the first row of each set of rows where the given
|
|
||||||
expressions evaluate to equal. The <literal>DISTINCT ON</literal>
|
|
||||||
expressions are interpreted using the same rules as for
|
|
||||||
<literal>ORDER BY</> (see above). Note that the <quote>first
|
|
||||||
row</quote> of each set is unpredictable unless <literal>ORDER
|
|
||||||
BY</> is used to ensure that the desired row appears first. For
|
|
||||||
example,
|
|
||||||
<programlisting>
|
|
||||||
SELECT DISTINCT ON (location) location, time, report
|
|
||||||
FROM weather_reports
|
|
||||||
ORDER BY location, time DESC;
|
|
||||||
</programlisting>
|
|
||||||
retrieves the most recent weather report for each location. But
|
|
||||||
if we had not used <literal>ORDER BY</> to force descending order
|
|
||||||
of time values for each location, we'd have gotten a report from
|
|
||||||
an unpredictable time for each location.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
The <literal>DISTINCT ON</> expression(s) must match the leftmost
|
|
||||||
<literal>ORDER BY</> expression(s). The <literal>ORDER BY</> clause
|
|
||||||
will normally contain additional expression(s) that determine the
|
|
||||||
desired precedence of rows within each <literal>DISTINCT ON</> group.
|
|
||||||
</para>
|
|
||||||
</refsect2>
|
|
||||||
|
|
||||||
<refsect2 id="SQL-FOR-UPDATE">
|
<refsect2 id="SQL-FOR-UPDATE">
|
||||||
<title id="sql-for-update-title"><literal>FOR UPDATE</literal> Clause</title>
|
<title id="sql-for-update-title"><literal>FOR UPDATE</literal> Clause</title>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue