mysql left join in_深入理解mysql之left join 使用详解

ON 子句与 WHERE 子句的不同

一种更好地理解带有 WHERE ... IS NULL 子句的复杂匹配条件的简单方法

Matching-Conditions 与 Where-conditions 的不同

关于 “A LEFT JOIN B ON 条件表达式” 的一点提醒

ON 条件(“A LEFT JOIN B ON 条件表达式”中的ON)用来决定如何从 B 表中检索数据行。

如果 B 表中没有任何一行数据匹配 ON 的条件,将会额外生成一行所有列为 NULL 的数据

在匹配阶段 WHERE 子句的条件都不会被使用。仅在匹配阶段完成以后,WHERE 子句条件才会被使用。它将从匹配阶段产生的数据中检索过滤。

让我们看一个 LFET JOIN 示例:

mysql> CREATE TABLE `product` (

`id` int(10) unsigned NOT NULL auto_increment,

`amount` int(10) unsigned default NULL,

PRIMARY KEY  (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1

mysql> CREATE TABLE `product_details` (

`id` int(10) unsigned NOT NULL,

`weight` int(10) unsigned default NULL,

`exist` int(10) unsigned default NULL,

PRIMARY KEY  (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1

mysql> INSERT INTO product (id,amount)

VALUES (1,100),(2,200),(3,300),(4,400);

Query OK, 4 rows affected (0.00 sec)

Records: 4  Duplicates: 0  Warnings: 0

mysql> INSERT INTO product_details (id,weight,exist)

VALUES (2,22,0),(4,44,1),(5,55,0),(6,66,1);

Query OK, 4 rows affected (0.00 sec)

Records: 4  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM product;

+----+--------+

| id | amount |

+----+--------+

|  1 |    100 |

|  2 |    200 |

|  3 |    300 |

|  4 |    400 |

+----+--------+

4 rows in set (0.00 sec)

mysql> SELECT * FROM product_details;

+----+--------+-------+

| id | weight | exist |

+----+--------+-------+

|  2 |     22 |     0 |

|  4 |     44 |     1 |

|  5 |     55 |     0 |

|  6 |     66 |     1 |

+----+--------+-------+

4 rows in set (0.00 sec)

mysql> SELECT * FROM product LEFT JOIN product_details

ON (product.id

你可能感兴趣的:(mysql,left,join,in)