0
SELECT * FROM Table JOIN Other ON Table.id = Other.tableId

MySQLラッパーを構築していますが、「ON」キーワードが結合(上記のように)と組み合わせてのみ使用されるのか、それとも他の場所で使用されるのか疑問に思っていますか?

4

4 に答える 4

1

you cant use ON alone somewhere. its used only with JOINs

but the joins you can use them without ON like that

   JOIN ... USING   //--according to SQL:2003

exemple:

a LEFT JOIN b USING (c1,c2,c3)
a LEFT JOIN b ON a.c1=b.c1 AND a.c2=b.c2 AND a.c3=b.c3

EDIT:

the ON clause could refer to columns in tables named to its right. the bellow example the ON clause can refer only to its operands.

Example:

  CREATE TABLE t1 (i1 INT);
  CREATE TABLE t2 (i2 INT);
  CREATE TABLE t3 (i3 INT);
  SELECT * FROM t1 JOIN t2 ON (i1 = i3) JOIN t3;
于 2013-02-03T12:33:13.640 に答える
1

ON キーワードはで使用されます

それらのいくつかはMySQLに固有のものです。

于 2013-02-03T12:52:11.990 に答える
0

を使用する場合にのみ存在し ANSI SQL-92 JOINます。他には何もありません

于 2013-02-03T12:30:58.553 に答える
0

ONキーワードも見つかり、テーブルステートメント(定義:)、構文()、ステートメントなど、他のいくつCREATE TABLEALTER TABLEFOREIGN KEY場所ON DELETE CASCADECREATE TRIGGER配置ON tbl_name FOR EACH ROWできCREATE INDEXます。


結合の場合、MySQLドキュメントのJOIN構文にはすべてが含まれています。

MySQLは、ステートメントJOINのtable_references部分、SELECTおよび複数のテーブルDELETEUPDATEステートメントに対して次の構文をサポートしています。

table_references:
    table_reference [, table_reference] ...

table_reference:
    table_factor
  | join_table

table_factor:
    tbl_name [[AS] alias] [index_hint_list]
  | table_subquery [AS] alias
  | ( table_references )
  | { OJ table_reference LEFT OUTER JOIN table_reference
        ON conditional_expr }

join_table:
    table_reference [INNER | CROSS] JOIN table_factor [join_condition]
  | table_reference STRAIGHT_JOIN table_factor
  | table_reference STRAIGHT_JOIN table_factor ON conditional_expr
  | table_reference {LEFT|RIGHT} [OUTER] JOIN table_reference join_condition
  | table_reference NATURAL [{LEFT|RIGHT} [OUTER]] JOIN table_factor

join_condition:
    ON conditional_expr
  | USING (column_list)

したがって、、およびステートメントでON使用できます。、、(および同等の、、)とともに 使用できます。SELECTUPDATEDELETEJOINLEFT JOINRIGHT JOININNER JOINLEFT OUTER JOINRIGHT OUTER JOIN

両方ではなく、またはのいずれONUSINGを使用します。

NATURAL JOIN(もちろん)と一緒に使用することはできません。

また、ANSI / ISOSQL標準とのいくつかの違いは次のとおりです。

  • ONで使用できますCROSS JOIN

  • また(オプションで)with STRAIGHT_JOIN(これはMySQLの追加です)

  • 使用することも、使用JOININNER JOIN ない ONこともできます。

  • UPDATEDELETE構文にも標準との違いがいくつかあります。

于 2013-02-03T12:46:52.610 に答える