SELECT * FROM Table JOIN Other ON Table.id = Other.tableId
MySQLラッパーを構築していますが、「ON」キーワードが結合(上記のように)と組み合わせてのみ使用されるのか、それとも他の場所で使用されるのか疑問に思っていますか?
SELECT * FROM Table JOIN Other ON Table.id = Other.tableId
MySQLラッパーを構築していますが、「ON」キーワードが結合(上記のように)と組み合わせてのみ使用されるのか、それとも他の場所で使用されるのか疑問に思っていますか?
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;
ON キーワードはで使用されます
それらのいくつかはMySQLに固有のものです。
を使用する場合にのみ存在し ANSI SQL-92 JOINます。他には何もありません。
ONキーワードも見つかり、テーブルステートメント(定義:)、構文()、ステートメントなど、他のいくつCREATE TABLEかALTER TABLEのFOREIGN KEY場所ON DELETE CASCADEにCREATE TRIGGER配置ON tbl_name FOR EACH ROWできCREATE INDEXます。
結合の場合、MySQLドキュメントのJOIN構文にはすべてが含まれています。
MySQLは、ステートメント
JOINのtable_references部分、SELECTおよび複数のテーブルDELETEとUPDATEステートメントに対して次の構文をサポートしています。
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
両方ではなく、またはのいずれONかUSINGを使用します。
NATURAL JOIN(もちろん)と一緒に使用することはできません。
また、ANSI / ISOSQL標準とのいくつかの違いは次のとおりです。
ONで使用できますCROSS JOIN。
また(オプションで)with STRAIGHT_JOIN(これはMySQLの追加です)
使用することも、使用JOINしINNER JOIN ない ONこともできます。
UPDATEDELETE構文にも標準との違いがいくつかあります。