Mysql ON子句是否用于JOIN以外的其他位置?

Mysql ON子句是否用于JOIN以外的其他位置?,mysql,Mysql,我正在构造一个MySQL包装器,想知道“ON”关键字是否仅用于连接(如上文所述),还是也用于其他地方?它仅在使用ANSI SQL-92 JOIN时出现。没有别的。你不能在某个地方单独使用。它仅与JOINs一起使用 但是连接你可以不用像那样使用它们 SELECT * FROM Table JOIN Other ON Table.id = Other.tableId 例如: JOIN ... USING //--according to SQL:2003 编辑: ON子句可以引用其右侧

我正在构造一个MySQL包装器,想知道“ON”关键字是否仅用于连接(如上文所述),还是也用于其他地方?

它仅在使用
ANSI SQL-92 JOIN
时出现。没有别的。

你不能在某个地方单独使用
。它仅与
JOIN
s一起使用

但是连接你可以不用像那样使用它们

SELECT * FROM Table JOIN Other ON Table.id = Other.tableId
例如:

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

ON
子句可以引用其右侧名为的表中的列。下面的示例
ON
子句只能引用其操作数

例如:

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

上的
关键字也可以找到,并且可以在其他几个地方,比如
ALTER TABLE
表格语句(在
外键
定义中:
ON DELETE CASCADE
),在语法中(
关于每行的tbl_名称),在
语句中,等等


对于连接,MySQL文档中的包含了所有内容:

MySQL支持以下
JOIN
syntax,用于
SELECT
语句和多个表
DELETE
UPDATE
语句的表引用部分:

因此,
上的
可用于
选择
更新
删除
语句。它可以与
连接
左连接
右连接
(以及等效的
内部连接
左外部连接
右外部连接
)一起使用

可以使用
上的或使用的,而不是两者都使用

它不能与
自然联接一起使用(当然)

与ANSI/ISO SQL标准的一些差异:

  • 您可以将
上的与交叉连接一起使用

  • 另外(可选)使用
    直接连接
    (这是MySQL添加)

  • 您可以使用
    连接
    内部连接
    ,而不使用
    上的

  • UPDATE
    DELETE
    语法与标准也有一些不同


  • ON
    关键字也用于


    其中一些是MySQL特有的。

    您已经拥有my+1。但是,删除/更新时的
    创建触发器
    授予
    都是标准的SQL。SQL Server中也使用了
    CREATE INDEX
      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;
    
    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)