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 JOIN
s
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
使用できます。、、(および同等の、、)とともに 使用できます。SELECT
UPDATE
DELETE
JOIN
LEFT JOIN
RIGHT JOIN
INNER JOIN
LEFT OUTER JOIN
RIGHT OUTER JOIN
両方ではなく、またはのいずれON
かUSING
を使用します。
NATURAL JOIN
(もちろん)と一緒に使用することはできません。
また、ANSI / ISOSQL標準とのいくつかの違いは次のとおりです。
ON
で使用できますCROSS JOIN
。
また(オプションで)with STRAIGHT_JOIN
(これはMySQLの追加です)
使用することも、使用JOIN
しINNER JOIN
ない ON
こともできます。
UPDATE
DELETE
構文にも標準との違いがいくつかあります。