¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

SELECT

̾��

SELECT -- �ơ��֥�⤷���ϥӥ塼����ιԤθ���

����

SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
    * | expression [ AS output_name ] [, ...]
    [ FROM from_item [, ...] ]
    [ WHERE condition ]
    [ GROUP BY expression [, ...] ]
    [ HAVING condition [, ...] ]
    [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]
    [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ]
    [ LIMIT { count | ALL } ]
    [ OFFSET start ]
    [ FOR UPDATE [ OF table_name [, ...] ] ]

������ from_item �ϰʲ��Τ����줫�Ǥ���

    [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
    ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]
    function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ]
    function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )
    from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]

����

SELECT��1�İʾ�Υơ��֥뤫��Ԥ��֤��ޤ��� SELECT �ΰ���Ū�ʽ����ϰʲ����̤�Ǥ���

  1. FROM �ꥹ�Ȥˤ��������Ǥ��׻�����ޤ��� (FROM �ꥹ�Ȥγ����Ǥϼ¥ơ��֥뤫���ۥơ��֥�Ǥ���) FROM �ꥹ�Ȥ�ʣ�������Ǥ����ꤵ�줿��硢�����ϥ�������礵��ޤ��� (��Ҥ� FROM �� �򻲾Ȥ��Ƥ���������)

  2. WHERE �礬���ꤵ�줿��硢�����������ʤ��ԤϤ��٤ƽ��Ϥ����������ޤ��� (��Ҥ�WHERE �� �򻲾Ȥ��Ƥ���������)

  3. GROUP BY �礬���ꤵ�줿��硢���Ϥϡ�1�İʾ���ͤ˰��פ���ԤΥ��롼�פ�ʬ�䤵��ޤ��� HAVING �礬���ꤵ�줿��硢���ꤷ�������������ʤ����롼�פϼ�������ޤ��� (��Ҥ� GROUP BY �� �� HAVING �� �򻲾Ȥ��Ƥ���������)

  4. UNION��INTERSECT������ӡ�EXCEPT �黻�Ҥ���Ѥ���ȡ�ʣ����SELECTʸ�ν��Ϥ�1�Ĥη�̽���ˤޤȤ�뤳�Ȥ��Ǥ��ޤ��� UNION �黻�Ҥϡ�ξ�����뤤�������η�̽���ˤ���Ԥ򤹤٤��֤��ޤ��� INTERSECT �黻�Ҥ�ξ���η�̽���ˤ���Ԥ򤹤٤��֤��ޤ��� EXCEPT �黻�ҤϺǽ�η�̽���ˤ��ꡢ2���ܤη�̽���ˤʤ��Ԥ��֤��ޤ��� ALL �����ꤵ��ʤ��¤ꡢ�����3�ĤȤ⡢��ʣ����Ԥϼ�������ޤ��� (��Ҥ�UNION ����INTERSECT ��������ӡ�EXCEPT ���򻲾Ȥ��Ƥ���������)

  5. �ºݤν��ϹԤϡ����򤵤줿�ƹԤ��Ф��ơ�SELECT���ϼ�����Ѥ��Ʒ׻����줿��ΤǤ��� (��Ҥ�SELECT �ꥹ���򻲾Ȥ��Ƥ���������)

  6. ORDER BY �礬���ꤵ�줿��硢�֤����Ԥϻ��ꤷ�����֤ǥ����Ȥ���ޤ��� ORDER BY �����ꤵ��ʤ����ϡ������ƥब�׻������Ǻǽ�˸��դ�����ΤȤ������餫�ν��֤ǹԤ��֤���ޤ��� (��Ҥ� ORDER BY �� �򻲾Ȥ��Ƥ���������)

  7. DISTINCT �Ϸ�̤����ʣ�Ԥ�������ޤ��� DISTINCT ON�ϡ����ꤵ�줿�����٤Ƥ˰��פ���Ԥ�������ޤ��� (�ǥե���Ȥ�)ALL �Ͻ�ʣ�����Ԥ�ޤᡢ���٤Ƥθ���Ԥ��֤��ޤ��� (��Ҥ�DISTINCT �� �򻲾Ȥ��Ƥ���������)

  8. LIMIT ���뤤�� OFFSET �礬���ꤵ�줿��硢SELECTʸ�Ϸ�̹Ԥΰ���ʬ�Τߤ��֤��ޤ��� (��Ҥ�LIMIT ���򻲾Ȥ��Ƥ���������)

  9. FOR UPDATE ��ˤ�ꡢSELECT ʸ�ϡ���³���¹Ԥ���빹���Ѥ�����Ԥ���å����ޤ��� (��Ҥ�FOR UPDATE �� �򻲾Ȥ��Ƥ���������)

�ơ��֥뤫���ͤ��ɤ߼�뤿��ˤ� SELECT ���¤�ɬ�פǤ��� FOR UPDATE ����Ѥ��뤿��ˤϡ�Ʊ�ͤ�UPDATE ���¤�ɬ�פǤ���

�ѥ�᡼��

FROM ��

FROM ���SELECT���оݤȤʤ륽�����ơ��֥��1�İʾ���ꤷ�ޤ��� ʣ���Υ����������ꤵ�줿��硢��̤Ϥ��٤ƤΥ�������ľ��(���������)�Ȥʤ�ޤ��� ���������̾��ľ�Ѥξ����ʰ���ʬ���֤��褦�����¤��뤿��������郎�դ��ä����ޤ���

FROM-������Ǥˤϰʲ������Ǥ��ޤ���

table_name

��¸�Υơ��֥�⤷���ϥӥ塼��̾���Ǥ�(�������޽���̾�Ǥ��)�� ONLY�����ꤵ�줿��硢���Υơ��֥�Τߤ�������󤵤�ޤ��� �⤷ ONLY �����ꤵ��ʤ���硢�ơ��֥��(�⤷�����)�����Ѿ����뤹�٤ƤΥơ��֥뤬������󤵤�ޤ��� �ҥơ��֥뤬������󤵤�뤳�Ȥ�ɽ������ˡ��ơ��֥�̾�� * ���դ��뤳�Ȥ��Ǥ��ޤ��������ߤΥС������Ǥϡ��ҥơ��֥�Υ������ϥǥե���ȤǹԤ��ޤ��� (7.1 ������Υ�꡼���Ǥϡ�ONLY ���ǥե���ȤǤ�����) �ǥե���Ȥο����񤤤��ѹ�����ˤϡ�sql_inheritance ���ꥪ�ץ������ѹ����ޤ��� (����:��ʸ��sql_interitance��sql_inheritance���ѹ���)

alias

��̾��ޤ� FROM �����ƥ������̾�Ǥ��� ��̾�ϴʷ餵�Τ��ᡢ�⤷���ϼ��ʷ�� (Ʊ���ơ��֥뤬ʣ���󥹥���󤵤����Ǥ�) ��ۣ�椵��ʤ�������˻Ȥ��ޤ��� ��̾�����ꤵ��Ƥ�����ϡ�������̾�ˤ�äƼºݤΥơ��֥�̾�ޤ��ϴؿ�̾�������˱�����ޤ��� �㤨�С�FROM foo AS f �Ȼ��ꤵ��Ƥ����硢�ʹߤ� SELECT ʸ�ǤϤ��� FROM �����ƥ�� foo �ǤϤʤ� f �Ȥ��ƻ��Ȥ���ɬ�פ�����ޤ��� �ơ��֥����̾������С����Υơ��֥��ʣ�������̾�����֤������������̾�ꥹ�Ȥ򵭽Ҥ��뤳�Ȥ��Ǥ��ޤ���

select

�� SELECT �� FROM ��ǻȤ����Ȥ��Ǥ��ޤ��� ����Ϥ��ν��Ϥ����� SELECT ���ޥ�ɼ¹Ի��˰���ơ��֥�Ȥ��ƺ������줿���Τ褦��ư��ޤ��� �� SELECT �ϥ��å��ǰϤޤ�ʤ���Фʤ餺��ɬ����̾���󶡤���ʤ���Фʤ�ޤ���

function_name

FROM ��˴ؿ��ƤӽФ�����Ѥ��뤳�Ȥ��Ǥ��ޤ��� (������ä˴ؿ�����̥��åȤ��֤�����ͭ�ѤǤ�����Ǥ�դδؿ�����Ѥ��뤳�Ȥ��Ǥ��ޤ���) ����Ϥ��ν��Ϥ����� SELECT ���ޥ�ɼ¹Ի��˰���ơ��֥�Ȥ��ƺ������줿���Τ褦��ư��ޤ��� �ޤ�����̾����Ѥ��뤳�Ȥ�Ǥ��ޤ��� ��̾������С����δؿ���ʣ����귿��ʣ����°��������̾���󶡤�����̾�ꥹ�Ȥ򵭽Ҥ��뤳�Ȥ��Ǥ��ޤ��� �ؿ��� record �ǡ��������֤���Τ��������Ƥ�����ϡ���̾���ʤ��������� AS �Ȥ����³�� ( column_name data_type [, ... ]) �Ȥ���������������ꥹ�Ȥ�ɬ�פǤ��� ������ꥹ�Ȥϡ��ؿ��ˤ�ä��֤����ºݤ���ο�����ӥǡ������˰��פ��Ƥ��ʤ���Фʤ�ޤ���

join_type

�ʲ��Τ����줫�Ǥ���

  • [ INNER ] JOIN

  • LEFT [ OUTER ] JOIN

  • RIGHT [ OUTER ] JOIN

  • FULL [ OUTER ] JOIN

  • CROSS JOIN

INNER ����� OUTER ��緿�Ǥϡ��������ʤ����NATURAL, ON join_condition���⤷���ϡ�USING (join_column [, ...])�Τ����줫��1�ĤΤ߻��ꤹ��ɬ�פ�����ޤ��� ��̣�ϸ���������ޤ��� CROSS JOIN �Ǥϡ������ζ�򵭽Ҥ��ʤ��Ƥ⹽���ޤ���

JOIN ��ϡ�2�Ĥ�FROM �����ƥ���ӤĤ��ޤ��� ����Ҥν��֤���뤿��ˡ�ɬ�פʤ�г�̤���Ѥ��Ƥ��������� ��̤�̵���ȡ�JOIN �Ϻ����鱦�ؤ�����Ҥˤ���ޤ��� �ɤΤ褦�ʾ��Ǥ�JOIN�ϡ�����ޤ�ʬ����줿FROM ���ܤ��⶯������դ��ޤ���

CROSS JOIN �� INNER JOIN �ϡ�FROM �κǾ�̤�2�Ĥι��ܤ��դ�����̤�Ʊ��Ρ�1�Ĥ�ľ�Ѥ��������ޤ��� ��������(�⤷�����)���������¤򤫤��뤳�Ȥ��Ǥ��ޤ��� CROSS JOIN �� INNER JOIN ON (true)�������Ǥ��ꡢ���ˤ�äƺ�������ԤϤ���ޤ��� �����η�緿�ϵ��Ҿ���ص��Τ�������Τ�ΤǤ������äơ��̾��FROM��WHERE��Ԥ�ʤ��Ȳ���Ԥ��ޤ���

LEFT OUTER JOIN �Ͼ��˹礦ľ�Ѥ����Ƥι�(�Ĥޤꡢ���η��������������Ƥ��Ȥ߹�蘆�줿��)�˲ä�����¦�ιԤ�����ʤ�����������������¦�Υơ��֥�γơ��ιԤΥ��ԡ����֤��ޤ��� ���κ�¦�ιԤϱ�¦�ιԤ� NULL �ͤ��������뤳�ȤǷ�礵�줿�ơ��֥�������˳�ĥ����ޤ��� �ɤιԤ��ޥå����Ƥ��뤫�����֡�JOIN �缫�Ȥξ��Τߤ���θ����뤳�Ȥ����դ��Ƥ��������� ¾�γ��������ϸ��Ŭ�Ѥ���ޤ���

�դˡ�RIGHT OUTER JOIN �����Ƥη�礵�줿�Ԥȡ����줾������ƤϤޤ��Τ��ʤ��ä���¦�ι�(��¦�� null �dz�ĥ����Ƥ��ޤ�)�˰�Ԥ��Ĥ��֤��ޤ��� ���ȱ������Ϥ����촹���뤳�Ȥ� LEFT OUTER JOIN ���Ѵ����뤳�Ȥ�Ǥ��뤿�ᡢ����Ϥ����ε��Ҿ���ص��Ǥ�������ޤ���

FULL OUTER JOIN �ϡ����٤Ƥη�礵�줿�ԡ����פ��ʤ��ä���¦�ι�(��¦��null�dz�ĥ��������)��1�Ԥ��ġ����ˡ����פ��ʤ��ä���¦�ι�(��¦��null�dz�ĥ��������)��1�Ԥ����֤��ޤ���

ON join_condition

join_condition �ϡ����ˤ����ƤɤιԤ����פ����Ȥߤʤ����ɤ�������ꤹ��(WHERE��Ʊ��)boolean �����ͤ��֤����Ǥ���

USING (join_column [, ...])

USING ( a, b, ... ) ��� ON left_table.a = right_table.a AND left_table.b = right_table.b ...�ξ�ά���Ǥ��� USING �������Ȥʤ�����ȹ礻��ξ���ǤϤʤ������Τߤ����ν��Ϥ˴ޤޤ�뤳�Ȥ��̣���ޤ���

NATURAL

NATURAL �� 2 �ĤΥơ��֥����Ʊ��̾������Ĥ��٤Ƥ���ꤷ�� USING �ꥹ�Ȥξ�ά���Ǥ���

WHERE ��

��ά��ǽ�� WHERE ����̾�ʲ��η����Ȥʤ�ޤ���

WHERE condition

�����ǡ�condition ��ɾ���η�� boolean �����֤�Ǥ�դμ��Ǥ��� ���ξ����������ʤ��ԤϤ��٤ƽ��Ϥ����������ޤ��� ���٤Ƥ��ѿ����Ȥ˼ºݤιԤ��ͤ������������˼��������֤����ˡ��ԤϾ����������ޤ���

GROUP BY ��

��ά��ǽ�� GROUP BY ����̾�ʲ��η����Ȥʤ�ޤ���

GROUP BY expression [, ...]

GROUP BY �ϡ����롼�ײ�����Ʊ���ͤ�ͭ���뤹�٤ƤιԤ� 1�ĤιԤ˶Ž̤��ޤ��� expression �ϡ�������̾����������(SELECT �ꥹ�ȹ���)��̾���⤷���Ͻ������⤷���ϡ���������ͤ���׻������Ǥ�դμ����뤳�Ȥ��Ǥ��ޤ��� ۣ��ʾ�硢GROUP BY ��̾���Ͻ�����̾�ǤϤʤ�������̾�Ȥ��Ʋ�ᤵ��ޤ���

����ؿ����⤷���Ѥ���Ƥ���ȡ��ƥ��롼�פ��������뤹�٤ƤιԤ��Ф��Ʒ׻����졢���롼�����ʬ�����ͤ���������ޤ��� (����GROUP BY��̵�����ϡ�����ؿ��Ϥ��٤Ƥ����򤵤줿�Ԥ��Ф��Ʒ׻����졢1�Ĥ��ͤ��������ޤ���) GROUP BY ������ȡ�����ؿ������ʳ��ǥ��롼�ײ�����Ƥ��ʤ���򻲾Ȥ��� SELECT �ꥹ�Ȥ�̵���ˤʤ�ޤ��� ���롼�ײ�����Ƥ��ʤ���ˤĤ����֤�����ͤ�ʣ�����ͤˤʤäƤ��ޤ�����Ǥ���

HAVING ��

��ά��ǽ�� HAVING ���̾�ʲ��η��ˤʤ�ޤ���

HAVING condition

������ condition �� WHERE ��ǻ��ꤹ���Τ�Ʊ���Ǥ���

HAVING �Ϥ��ξ����������ʤ����롼�ײ����줿�Ԥ�������ޤ��� HAVING �� WHERE �Ȥϰ㤤�ޤ��� WHERE �Ǥϡ�GROUP BY ��Ŭ�����ˡ����̤ιԤ��Ф��ƥե��륿��Ԥ���HAVING �� GROUP BY ���������줿���롼�ײ����줿�Ԥ��Ф��ƥե��륿��Ԥ��ޤ��� condition����󻲾Ȥϡ�����ؿ����ɽ��뻲�Ȥ������ۣ�椵��̵�����롼�ײ����줿��򻲾Ȥ��ʤ���Фʤ�ޤ���

UNION ��

UNION ���̾�ʲ��η����Ȥʤ�ޤ���

select_statement UNION [ ALL ] select_statement

select_statement �ϡ�ORDER BY��LIMIT��FOR UPDATE�������ʤ���Ǥ�դ�SELECTʸ�Ǥ��� (�⤷��̤dz���Ƥ����顢ORDER BY �� LIMIT ����������Ϳ�Ǥ��ޤ��� ��̤�̵���ȡ������ζ�ϱ�¦�����ϼ��ˤǤϤʤ���UNION�η�̤��Ф���Ŭ�Ѥ���Ƥ��ޤ��ޤ���)

UNION �黻�Ҥϡ��ƤӽФ��줿SELECTʸ���֤����Ԥ��½����׻����ޤ��� ���ʤ��Ȥ�ɤ��餫������ɽ���С����ιԤ�2�Ĥη�̥��åȤ��½�����ˤ���ޤ��� ľ�� UNION �α黻���ܤȤʤ� SELECT ʸ�ϡ�Ʊ��������֤��ʤ���Фʤ餺���ޤ����б�������Υǡ������ˤϸߴ�����ɬ�פǤ���

ALL ���ץ���󤬻��ꤵ��Ƥ��ʤ��ȡ�UNION �η�̤ˤϽ�ʣ�Ԥϴޤޤ�ޤ��� ALL �Ͻ�ʣ�����Ԥ��ޤ���

��Ĥ� SELECTʸ��ʣ����UNION �黻�Ҥ������硢��̤Ǽ�����ʤ��¤ꡢ����ɾ���Ϻ����鱦�˹Ԥ��ޤ���

�������Ǥϡ�FOR UPDATE �� UNION �η�̤��Ф��Ƥ⡢UNION�β��餫�����Ϥ��Ф��Ƥ���ꤹ�뤳�Ȥ��Ǥ��ޤ���

INTERSECT ��

INTERSECT ���̾�ʲ��η����Ȥʤ�ޤ���

select_statement INTERSECT [ ALL ] select_statement

select_statement �ϡ�ORDER BY��LIMIT��FOR UPDATE ������ʤ���Ǥ�դ�SELECTʸ�Ǥ���

INTERSECT �ϡ��ƤӽФ����SELECTʸ���֤��Ԥ��ѽ����׻����ޤ��� ξ���η�̥��åȤ˸�����硢���ιԤ�2�Ĥη�̥��åȤ��ѽ������¸�ߤ��ޤ���

ALL���ץ���󤬻��ꤵ��Ƥ��ʤ��ȡ�INTERSECT �η�̤ˤϽ�ʣ�Ԥϴޤޤ�ޤ��� ALL �������硢��¦�ơ��֥��m�Ĥν�ʣ����¦�ơ��֥��n�Ĥν�ʣ������Ԥϡ���̥��åȤ�min(m,n)�� �и����ޤ���

��Ĥ� SELECTʸ��ʣ����INTERSECT �黻�Ҥ������硢��̤Ǽ�����ʤ��¤ꡢ����ɾ���Ϻ����鱦�˹Ԥ��ޤ��� INTERSECT ��UNION���⶯������դ��Ǥ��� �ĤޤꡢA UNION B INTERSECT C ��A UNION (B INTERSECT C) �Ȳ�ᤵ��ޤ���

EXCEPT ��

EXCEPT ���̾�ʲ��η����Ȥʤ�ޤ���

select_statement EXCEPT [ ALL ] select_statement

select_statement �ϡ�ORDER BY��LIMIT��FOR UPDATE �������ʤ���Ǥ�դ�SELECTʸ�Ǥ���

EXCEPT�ϡ���¦�� SELECT ʸ�η�̤�¸�ߤ�����¦�η�̤ˤ�¸�ߤ��ʤ��Ԥν����׻����ޤ���

ALL���ץ���󤬻��ꤵ��Ƥ��ʤ��ȡ�EXCEPT �η�̤ˤϽ�ʣ�Ԥϴޤޤ�ޤ��� ALL �������硢��¦�ơ��֥��m�Ĥν�ʣ����¦�ơ��֥��n�Ĥν�ʣ������Ԥϡ���̥��åȤ�max(m-n,0)�� �и����ޤ���

��Ĥ� SELECTʸ��ʣ����EXCEPT �黻�Ҥ������硢��̤Ǽ�����ʤ��¤ꡢ����ɾ���Ϻ����鱦�˹Ԥ��ޤ��� EXCEPT�η���դ��Υ�٥��UNION��Ʊ���Ǥ���

SELECT �ꥹ��

SELECT �ꥹ��(SELECT �� FROM �δ֤ˤ��륭�����)�ϡ�SELECT ʸ�ν��ϹԤ�������뼰����ꤷ����ΤǤ��� ���μ��Ǥϡ�FROM ����Ƿ׻����줿��򻲾Ȥ��뤳�Ȥ��Ǥ��ޤ�(�����ơ��̾�ϻ��Ȥ��ޤ�)�� AS output_name ����Ѥ��ơ�������Ȥ��̤�̾�������Ǥ��ޤ��� ����̾���ϼ��ɽ���Ѥ����٥�Ȥ��ƻȤ��ޤ��� �ޤ���ORDER BY �� GROUP BY ���������ͤ򻲾Ȥ��뤿��ˤ���Ѥ���ޤ��� ��������WHERE �� HAVING��Ǥϻ��Ѥ��줺�������ˤϼ���񤫤ʤ���Фʤ�ޤ���

��������ˡ����򤵤줿�Ԥ����Ƥ����ɽ����ά���Ȥ��ơ����ϥꥹ�Ȥ� * �Ƚ񤯤��Ȥ��Ǥ��ޤ��� �ޤ������Υơ��֥�Τߤ�ͳ�褹�����ɽ����ά���Ȥ��ơ�table_name.*�Ƚ񤯤��Ȥ�Ǥ��ޤ���

ORDER BY ��

��ά��ǽ�� ORDER BY����̾�ʲ��η����Ȥʤ�ޤ���

ORDER BY expression [ ASC | DESC | USING operator ] [, ...]

expression �ˤϡ�������(SELECT �ꥹ�ȹ���)��̾���⤷���Ͻ��������뤤�ϡ��������ͤ�����������Ǥ�դμ���Ȥ뤳�Ȥ��Ǥ��ޤ���

ORDER BY ��ˤ�ꡢ��̤ιԤ���ꤷ�����˽��äƥ����Ȥ��뤳�Ȥ��Ǥ��ޤ��� ��äȤ⺸�ˤ��뼰��2�ĤιԤ��������ʤä����ϡ����μ��˽������������������й��˼��μ��˿ʤߤޤ��� ���ꤷ���������Ƥ��������ʤä����ϡ������˰�¸�������֤��֤���ޤ���

�����Ȥϡ�������(�����鱦�ؤ�)����ΰ��֤Ǥ��� ���ε�ǽ�ˤ�ꡢ��դ�̾��������ʤ�����Ф��ƽ����������뤳�Ȥ��Ǥ��ޤ��� AS �����Ѥ���з�����̾���������Ƥ뤳�Ȥ��Ǥ��ޤ��Τǡ�����Ϸ褷��ɬ�פʤ�ΤǤϤ���ޤ���

�ޤ���ORDER BY ��ˤϡ�SELECT ��̥ꥹ�Ȥ˽и����ʤ����ޤࡢǤ�դμ�����ѤǤ��ޤ��� ���äơ��ʲ���ʸ��ͭ���ʤ�ΤǤ���

SELECT name FROM distributors ORDER BY code;

���ε�ǽ�����¤ϡ�UNION��INTERSECT��EXCEPT �η�̤� ORDER BY ��Ŭ�Ѥ�����ϡ�������ѤǤ������������̾���������Τߤ����Ǥ���Ȥ������Ǥ���

ORDER BY �����������̾��������̾��ξ���˰��פ���ñ�ʤ�̾���Ǥ��ä���硢ORDER BY�Ϸ����̾�Ȥ��Ƥ���򰷤��ޤ��� ����ϡ�Ʊ�������ˤ����� GROUP BY ������Ȥ�ȿ�ФǤ��� ɸ��SQL�Ȥθߴ����Τ��ᤳ�������礬ȯ�����Ƥ��ޤ���

��ά��ǽ�ʥ������ASC (����)��DESC (�߽�)��ORDER BY���Ǥ�դμ��θ���դ��ä��뤳�Ȥ��Ǥ��ޤ��� ���꤬�ʤ���С��ǥե���Ȥ�ASC���դ��Ƥ����ΤȤ��ư����ޤ��� ����ˡ�ˡ��������黻��̾��USING ��˻��ꤹ�뤳�Ȥ��Ǥ��ޤ��� �̾ASC �� USING < �ȡ�DESC �� USING > ��Ʊ���Ǥ��� (���������桼������Υǡ������κ�Ԥϡ��ǥե���ȤΥ����Ƚ礬������������������뤳�Ȥ��Ǥ����黻�Ҥ˰ۤʤ�̾�����б��Ť����뤳�Ȥ�Ǥ��ޤ���)

null�ͤ�¾���ͤ���⤤��ΤȤ��ƥ����Ȥ���ޤ��� �����ؤ���ȡ�����Υ����Ƚ�Ǥ�null�ͤϺǸ�ˡ��߽�Υ����Ƚ�Ǥ�null�ͤϺǽ�˥����Ȥ���ޤ���

ʸ�����Υǡ����Ǥϡ��ǡ����١������饹���ν�������˷��ꤵ�������������ξȹ��˽��äƥ����Ȥ���ޤ���

LIMIT ��

LIMIT ���2�Ĥ���Ω�������礫�鹽������ޤ���

LIMIT { count | ALL }
OFFSET start

count ���֤����Ԥκ��������ꤷ��������start �ϹԤ��֤��Ϥ���������Ф��Կ�����ꤷ�ޤ��� ξ���Ȥ���ꤵ�줿��硢 start�Ԥ����Ф��졢�������������count�Ԥ��֤���ޤ���

LIMIT ��Ȥ����ϡ���̤ιԤ��դʽ��֤˶������� ORDER BY ���Ȥ��Τ��ɤ��ͤ��Ǥ��� �������ʤ��ȡ��䤤��碌�ιԤ�ͽ¬�Բ�ǽ�ʥ��֥��åȤ����뤳�Ȥˤʤ�ޤ��� 10 ���� 20 ���ܤޤǤ�Ф����Ȥ��Ƥ��뤫�⤷��ޤ��󤬡��ɤν��֤� 10 ���� 20 ���ܤޤǤʤΤǤ��礦��? ORDER BY ����ꤷ�ʤ��¤�ɤν��֤����狼��ʤ��ΤǤ���

�䤤��碌�ץ��ʤ��䤤��碌�ײ������������ LIMIT ���θ���ޤ��Τǡ�LIMIT �� OFFSET �˲�����Ѥ��뤫�ˤ�ä�(�ۤʤ�Ԥν��֤�����)�ۤʤä��ײ�����뤳�Ȥˤʤ�Ǥ��礦�� �������äơ��䤤��碌�Ρ��ۤʤ륵�֥��åȤ����򤹤뤿��˰ۤʤ� LIMIT/OFFSET ���ͤ�Ȥ��ȡ�ORDER BY ��ͽ¬��ǽ�ʷ�̤ν���������ʤ��¤ꡢ̷�⤷����̤��֤��ޤ��� ����ϥХ��ǤϤ���ޤ��� ����� SQL �� ORDER BY �ǽ��֤����椷�ʤ��¤��䤤��碌�η�̤�����ν��֤��֤����Ȥ���«���ʤ��Ȥ������¤��ܼ�Ū�ʷ�̤ʤΤǤ���

DISTINCT ��

DISTINCT�����ꤵ���ȡ���ʣ����Ԥ����Ʒ�̥��åȤ���������ޤ��� (�ƽ�ʣ�Ԥ����1�ԤΤߤ��ݻ�����ޤ���) ALL �Ϥ���ȿ�ФΤ��Ȥ���ꤷ�����ƤιԤ��ݻ�����ޤ������줬�ǥե���ȤǤ���

DISTINCT ON ( expression [, ...] ) �ϳƹԽ�������Ϳ����줿������������ɾ���������ǽ�ιԤΤߤ��ݻ����ޤ��� DISTINCT ON ���ϡ�(��Ҥ�)ORDER BY ��Ʊ����§�ǰ����ޤ��� �ƽ����"�ǽ�ι�"�ϡ�ORDER BY ����Ѥ�����Ū�ιԤ��ǽ�˸���뤳�Ȥ��ݾڤ��ʤ��¤�ͽ¬���뤳�ȤϤǤ��ޤ��� �㤨�С�

SELECT DISTINCT ON (location) location, time, report
    FROM weather_reports
    ORDER BY location, time DESC;

�ϡ��������κǿ��ε��ݾ������Ф��ޤ��� ��������ORDER BY ����Ѥ��Ƴ������λ����ͤ�߽�˶������ʤ��ä��Ȥ����顢��������ͽ¬�Ǥ��ʤ����֤�ͽ������뤳�Ȥˤʤ�ޤ���

DISTINCT ON ����ORDER BY ���κǤ⺸¦�˰��פ��ʤ���Фʤ�ޤ��� ORDER BY ����̾��DISTINCT ON���롼�פ���Ǵ�˾����Ԥ�ͥ���̤���ꤹ�롢�ɲ�Ū�ʼ���ޤߤޤ���

FOR UPDATE ��

FOR UPDATE �ϰʲ��η����Ȥʤ�ޤ���

FOR UPDATE [ OF table_name [, ...] ]

FOR UPDATE ����Ѥ�����䤤��碌�ˤ�äƸ������줿�Ԥ������Ѥ˥��å�����ޤ��� ����ˤ�ꡢ���ԤΥȥ�󥶥�����󤬽�λ����ޤǤϤ����ιԤ�¾�Υȥ�󥶥������ˤ�ä��ѹ����줿�������줿�ꤹ�뤳�Ȥ��ʤ��ʤ�ޤ��� �Ĥޤꡢ���ԤΥȥ�󥶥�����󤬽�λ����ޤǤϡ�¾�Υȥ�󥶥�����󤬤����ιԤ��Ф��� UPDATE��DELETE���ޤ��� SELECT FOR UPDATE ���Ԥ��Ƥ���ݤ����ΤǤ��� �ޤ���¾�Υȥ�󥶥�����󤫤�� UPDATE��DELETE���ޤ��� SELECT FOR UPDATE �ˤ�ä����򤵤�Ƥ���Ԥ����å�����Ƥ������ SELECT FOR UPDATE ��¹Ԥ��褦�Ȥ���ȡ�SELECT FOR UPDATE �Ϥ��Υȥ�󥶥�����󤬽�λ����Τ��Ԥ������θ幹�����줿�Ԥ���å������֤��ޤ� (�Ԥ�������줿�����֤��ޤ���)�� �ܺ٤ˤĤ��Ƥϡ���12���򻲾Ȥ��Ƥ���������

FOR UPDATE �������Υơ��֥뤬���ꤵ��Ƥ�����ϡ����Υơ��֥�ιԤΤߤ����å����졢SELECT ���¾�Υơ��֥���̾�ɤ�����ɤ߹��ޤ������Ǥ���

FOR UPDATE �ϡ��֤����Ԥ��б�����ġ��Υơ��֥�Ԥ����Τ˼��̤Ǥ��ʤ����ˤϻ��Ѥ��뤳�Ȥ��Ǥ��ޤ����㤨�С�����ˤϻ��ѤǤ��ޤ���

FOR UPDATE �ϡ��С������ 7.3 �������PostgreSQL�Ȥθߴ����Τ���� LIMIT �����˽񤯤��Ȥ��Ǥ��ޤ��� ���������ξ��Ǥ�ºݤˤ� LIMIT �θ�˼¹Ԥ����Τǡ�LIMIT �θ�˽񤯤��Ȥ򤪴��ᤷ�ޤ���

��

�ơ��֥�films��ơ��֥�distributors�ȷ�礹��ˤϲ����Τ褦�ˤ��ޤ���

SELECT f.title, f.did, d.name, f.date_prod, f.kind
    FROM distributors d, films f
    WHERE f.did = d.did

       title       | did |     name     | date_prod  |   kind
-------------------+-----+--------------+------------+----------
 The Third Man     | 101 | British Lion | 1949-12-23 | Drama
 The African Queen | 101 | British Lion | 1951-08-11 | Romantic
 ...

���ƤαDz���� len ���פ� kind ��ˤ�äƷ�̤򥰥롼�ײ�����ˤϲ����Τ褦�ˤ��ޤ���

SELECT kind, sum(len) AS total FROM films GROUP BY kind;

   kind   | total
----------+-------
 Action   | 07:34
 Comedy   | 02:58
 Drama    | 14:28
 Musical  | 06:42
 Romantic | 04:38

���ƤαDz���� len ���פ� kind ��ˤ�äƷ�̤򥰥롼�ײ�������פ� 5 ���֤�꾯�ʤ����롼�פι�פ�ɽ�����ޤ���

SELECT kind, sum(len) AS total
    FROM films
    GROUP BY kind
    HAVING sum(len) < interval '5 hours';

   kind   | total
----------+-------
 Comedy   | 02:58
 Romantic | 04:38

�ʲ�����Ĥ���ϸ��̤η�̤������ܤ��� (name) �����Ƥ˴�Ť��ƥ����Ȥ��롢Ʊ����ˡ�Ǥ���

SELECT * FROM distributors ORDER BY name;
SELECT * FROM distributors ORDER BY 2;

 did |       name
-----+------------------
 109 | 20th Century Fox
 110 | Bavaria Atelier
 101 | British Lion
 107 | Columbia
 102 | Jean Luc Godard
 113 | Luso films
 104 | Mosfilm
 103 | Paramount
 106 | Toho
 105 | United Artists
 111 | Walt Disney
 112 | Warner Bros.
 108 | Westward

������ϡ���̤򤽤줾��Υơ��֥�� W �ǻϤޤ��Τ��������¤��ơ��ɤΤ褦�˥ơ��֥� distributors �� actors �η���������뤫��ɽ���Ƥ��ޤ��� ��ʣ���ʤ��ԤΤߤ�ɬ�פʤΤǡ�ALL ������ɤϾ�ά����Ƥ��ޤ���

distributors:               actors:
 did |     name              id |     name
-----+--------------        ----+----------------
 108 | Westward               1 | Woody Allen
 111 | Walt Disney            2 | Warren Beatty
 112 | Warner Bros.           3 | Walter Matthau
 ...                         ...

SELECT distributors.name
    FROM distributors
    WHERE distributors.name LIKE 'W%'
UNION
SELECT actors.name
    FROM actors
    WHERE actors.name LIKE 'W%';

      name
----------------
 Walt Disney
 Walter Matthau
 Warner Bros.
 Warren Beatty
 Westward
 Woody Allen

������ϡ�FROM����ؿ��λ�����ˡ��������ꥹ�Ȥ�������Ȥʤ�����ξ���˴ؤ��Ƽ����Ƥ��ޤ���

CREATE FUNCTION distributors(int) RETURNS SETOF distributors AS '
    SELECT * FROM distributors WHERE did = $1;
' LANGUAGE SQL;

SELECT * FROM distributors(111);
 did |    name
-----+-------------
 111 | Walt Disney

CREATE FUNCTION distributors_2(int) RETURNS SETOF record AS '
    SELECT * FROM distributors WHERE did = $1;
' LANGUAGE SQL;

SELECT * FROM distributors_2(111) AS (f1 int, f2 text);
 f1  |     f2
-----+-------------
 111 | Walt Disney

�ߴ���

�����ʤ��顢SELECT ʸ��ɸ��SQL�ȸߴ���������ޤ��� ����������ĥ��ǽ��¸�����Ƥ��ʤ���ǽ�⤤���Ĥ�����ޤ���

FROM ��ξ�ά

PostgreSQL�Ǥϡ�FROM ����ά���뤳�Ȥ��Ǥ��ޤ��� �ʲ��Τ褦����ľ��ñ��ʼ��η�̤�׻������뤳�Ȥ��Ǥ��ޤ���

SELECT 2+2;

 ?column?
----------
        4

¾��SQL�ǡ����١����Ǥϡ��������ä�SELECT��Ԥ�����ˤϥ��ߡ���1�ԥơ��֥��Ȥ�ʤ���Фʤ�ޤ���

���Τ��Ϥ���ޤ��󤬡����̤�SELECT����ơ��֥��ʤ����ʲ��Τ褦����ˡ������ޤ���

SELECT distributors.* WHERE distributors.name = 'Westward';

 did |   name
-----+----------
 108 | Westward

����ϡ�SELECT�ǻ��Ȥ���뤱��ɤ� FROM �Ǥϵ��Ҥ���ʤ��ơ��֥뤬�����ۤ� FROM �����ƥ���ɲä����Τǡ�ư��ޤ���

����������ʾ�ά���Ǥ������ְ�äƻȤ��䤹���Ǥ��� �㤨�С����Υ��ޥ��

SELECT distributors.* FROM distributors d;

�Ϥ����餯�ְ㤤�Ǥ����ۤȤ�ɤΥ桼���ϡ�

SELECT d.* FROM distributors d;

��տޤ����ºݤ������������̵�����

SELECT distributors.* FROM distributors d, distributors distributors;

��տޤ��ʤ��Ǥ��礦�� ���μ�δְ㤤�򸡽ФǤ���褦�ˡ�PostgreSQL �ϡ�����Ū�� FROM�礬���äƤ⡢����Ū�� FROM ��ǽ��SELECTʸ�ǻ��Ѥ���Ƥ�����˷ٹ��ȯ���ޤ��� �ޤ���ADD_MISSING_FROM�ѥ�᡼����false�����ꤹ�뤳�Ȥǡ�����Ū��FROM��ǽ��̵���ˤ��뤳�Ȥ��Ǥ��ޤ���

AS �������

ɸ��SQL�Ǥϡ���ά��ǽ�ʥ������AS ��ñ�ʤ�Υ����ǡ����ΰ�̣�˱ƶ����뤳��̵����ά���뤳�Ȥ��Ǥ��ޤ��� PostgreSQL �Υѡ����Ͻ������̾�����ѹ�����ݤˤ��Υ�����ɤ�ɬ�פȤ��ޤ��� �ʤ��ʤ鷿�γ�ĥ��ǽ��ͤ���ȡ����Υ�����ɤ��ʤ��ȹ�ʸ���Ϥ������Ƥ��ˤĤʤ��뤫��Ǥ��� ��������FROM �����ƥ�Ǥ�AS�Ͼ�ά��ǽ�Ǥ���

GROUP BY �� ORDER BY�ˤ��������Ѳ�ǽ��̾������

SQL92�Ǥϡ�ORDER BY��ϡ���̤���̾�������Τߤ���Ѥ��뤳�Ȥ��Ǥ���GROUP BY ��ϡ�������̾����ʤ뼰�Τߤ���ѤǤ��ޤ��� PostgreSQL �ϡ������ζ�Ǥ��줾��¾������Ʊ���褦�ˤǤ���褦�˳�ĥ���Ƥ��ޤ��� (�����������Ƥ����������ɸ��β�᤬���Ѥ���ޤ���) �ޤ���PostgreSQL�ǤϤɤ���ζ�ˤ�Ǥ�դμ������Ǥ��ޤ��� ���ǻȤ���̾���Ͼ�˷�����̾���ǤϤʤ��������̾���Ȥ��Ƥߤʤ���뤳�Ȥ����դ��Ƥ���������

SQL99�Ǥϡ�SQL92�Ȥξ�̸ߴ����������ʤ���¿���ۤʤä��������Ѥ��ޤ��� ���������ۤȤ�ɤξ�硢PostgreSQL��SQL99��Ʊ����ˡ��ORDER BY �� GROUP BY���ᤷ�ޤ���

��ɸ���

DISTINCT ON��LIMIT��OFFSET ���ɸ��SQL�Ǥ��������Ƥ��ޤ���