|
1 | 1 | <!--
|
2 |
| -$PostgreSQL: pgsql/doc/src/sgml/ref/select.sgml,v 1.79 2005/01/04 03:58:16 tgl Exp $ |
| 2 | +$PostgreSQL: pgsql/doc/src/sgml/ref/select.sgml,v 1.80 2005/01/04 08:59:45 tgl Exp $ |
3 | 3 | PostgreSQL documentation
|
4 | 4 | -->
|
5 | 5 |
|
@@ -695,6 +695,45 @@ SELECT name FROM distributors ORDER BY code;
|
695 | 695 | was initialized.
|
696 | 696 | </para>
|
697 | 697 | </refsect2>
|
| 698 | + |
| 699 | + <refsect2 id="sql-distinct"> |
| 700 | + <title id="sql-distinct-title"><literal>DISTINCT</literal> Clause</title> |
| 701 | + |
| 702 | + <para> |
| 703 | + If <literal>DISTINCT</> is specified, all duplicate rows are |
| 704 | + removed from the result set (one row is kept from each group of |
| 705 | + duplicates). <literal>ALL</> specifies the opposite: all rows are |
| 706 | + kept; that is the default. |
| 707 | + </para> |
| 708 | + |
| 709 | + <para> |
| 710 | + <literal>DISTINCT ON ( <replaceable |
| 711 | + class="parameter">expression</replaceable> [, ...] )</literal> |
| 712 | + keeps only the first row of each set of rows where the given |
| 713 | + expressions evaluate to equal. The <literal>DISTINCT ON</literal> |
| 714 | + expressions are interpreted using the same rules as for |
| 715 | + <literal>ORDER BY</> (see above). Note that the <quote>first |
| 716 | + row</quote> of each set is unpredictable unless <literal>ORDER |
| 717 | + BY</> is used to ensure that the desired row appears first. For |
| 718 | + example, |
| 719 | +<programlisting> |
| 720 | +SELECT DISTINCT ON (location) location, time, report |
| 721 | + FROM weather_reports |
| 722 | + ORDER BY location, time DESC; |
| 723 | +</programlisting> |
| 724 | + retrieves the most recent weather report for each location. But |
| 725 | + if we had not used <literal>ORDER BY</> to force descending order |
| 726 | + of time values for each location, we'd have gotten a report from |
| 727 | + an unpredictable time for each location. |
| 728 | + </para> |
| 729 | + |
| 730 | + <para> |
| 731 | + The <literal>DISTINCT ON</> expression(s) must match the leftmost |
| 732 | + <literal>ORDER BY</> expression(s). The <literal>ORDER BY</> clause |
| 733 | + will normally contain additional expression(s) that determine the |
| 734 | + desired precedence of rows within each <literal>DISTINCT ON</> group. |
| 735 | + </para> |
| 736 | + </refsect2> |
698 | 737 |
|
699 | 738 | <refsect2 id="SQL-LIMIT">
|
700 | 739 | <title id="sql-limit-title"><literal>LIMIT</literal> Clause</title>
|
@@ -739,45 +778,6 @@ OFFSET <replaceable class="parameter">start</replaceable>
|
739 | 778 | </para>
|
740 | 779 | </refsect2>
|
741 | 780 |
|
742 |
| - <refsect2 id="sql-distinct"> |
743 |
| - <title id="sql-distinct-title"><literal>DISTINCT</literal> Clause</title> |
744 |
| - |
745 |
| - <para> |
746 |
| - If <literal>DISTINCT</> is specified, all duplicate rows are |
747 |
| - removed from the result set (one row is kept from each group of |
748 |
| - duplicates). <literal>ALL</> specifies the opposite: all rows are |
749 |
| - kept; that is the default. |
750 |
| - </para> |
751 |
| - |
752 |
| - <para> |
753 |
| - <literal>DISTINCT ON ( <replaceable |
754 |
| - class="parameter">expression</replaceable> [, ...] )</literal> |
755 |
| - keeps only the first row of each set of rows where the given |
756 |
| - expressions evaluate to equal. The <literal>DISTINCT ON</literal> |
757 |
| - expressions are interpreted using the same rules as for |
758 |
| - <literal>ORDER BY</> (see above). Note that the <quote>first |
759 |
| - row</quote> of each set is unpredictable unless <literal>ORDER |
760 |
| - BY</> is used to ensure that the desired row appears first. For |
761 |
| - example, |
762 |
| -<programlisting> |
763 |
| -SELECT DISTINCT ON (location) location, time, report |
764 |
| - FROM weather_reports |
765 |
| - ORDER BY location, time DESC; |
766 |
| -</programlisting> |
767 |
| - retrieves the most recent weather report for each location. But |
768 |
| - if we had not used <literal>ORDER BY</> to force descending order |
769 |
| - of time values for each location, we'd have gotten a report from |
770 |
| - an unpredictable time for each location. |
771 |
| - </para> |
772 |
| - |
773 |
| - <para> |
774 |
| - The <literal>DISTINCT ON</> expression(s) must match the leftmost |
775 |
| - <literal>ORDER BY</> expression(s). The <literal>ORDER BY</> clause |
776 |
| - will normally contain additional expression(s) that determine the |
777 |
| - desired precedence of rows within each <literal>DISTINCT ON</> group. |
778 |
| - </para> |
779 |
| - </refsect2> |
780 |
| - |
781 | 781 | <refsect2 id="SQL-FOR-UPDATE">
|
782 | 782 | <title id="sql-for-update-title"><literal>FOR UPDATE</literal> Clause</title>
|
783 | 783 |
|
|
0 commit comments