LEFT JOIN连表时,ON后多条件无效问题
2019-05-29 21:48
866 查看
/**创建表**/ /**创建表1**/ CREATE TABLE `product` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `amount` INT(10) UNSIGNED DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; /**创建表2**/ 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=INNODB DEFAULT CHARSET=utf8; /**插入数据**/ INSERT INTO product(id,amount) VALUES (1,100),(2,200),(3,300),(4,400); INSERT INTO product_details(id,weight,exist) VALUES (2,22,0),(4,44,1),(5,55,0),(6,66,1); /**查询数据**/ SELECT * FROM product; SELECT * FROM product_details;
一、左外链接查询
/**左连接查询**/ SELECT * FROM product LEFT JOIN product_details ON (product.`id` = product_details.`id`);
(51CTO加水印真low!)
SELECT * FROM product LEFT JOIN product_details ON (product.id = product_details.id) AND product_details.id=2;
这个查询使用ON条件决定了从LEFT JOIN的product_details表中检索符合的所有数据行。
SELECT * FROM product LEFT JOIN product_details ON (product.id = product_details.id) WHERE product_details.id=2;
这个查询做了LEFT JOIN,然后使用WHERE子句从LEFT JOIN的数据中过滤掉不符合条件的数据行。
再看例子:
SELECT * FROM product LEFT JOIN product_details ON product.id = product_details.id AND product.amount=100;
所有来自product表的数据行都被检索到了,但没有在product_details表中匹配到记录
(product.id = product_details.id AND product.amount=100 条件并没有匹配到任何数据)
SELECT * FROM product LEFT JOIN product_details ON (product.id = product_details.id) AND product.amount=200
所有来自product表的数据行都被检索到了,有一条数据匹配到了。
从上述可知:WHERE条件发生在匹配阶段之后!
相关文章推荐
- left join 连表时,on后多条件无效问题
- Oracle LEFT JOIN中ON条件与WHERE条件的区别
- left join 过滤条件写在on后面和写在where 后面的区别
- LEFT JOIN关联表中ON,WHERE后面跟条件的区别
- left join 过滤条件写在on后面和写在where 后面的区别
- 关于Android的Cordova插件plugin OnActivityResult无效的问题
- ios手机访问H5页面中$(document).on绑定无效问题
- LEFT JOIN(联表)的条件写在ON中和WHERE的区别
- android onActivityResult无效或先执行或无回传问题
- SQL_left join中on和where条件的区别
- hibernate 更改查询条件无效的缓存问题
- left join加上where条件的困惑,(left join 无用 / 无效 )
- mysql中left join中的on条件 和 where条件区别
- jQuery使用on()绑定动态生成元素的事件无效的问题
- 解决Bash On Ubuntu On Window安装Zsh无效问题附安装说明
- Android 开发学习手记(三):关于PullToRefresh的setOnTouchListener()无效的问题。
- oracle数据库sql语句left join,right join,inner join的条件on和where的区别
- input type file onchange上传文件的过程中,遇到同一个文件二次上传无效的问题。
- onsubmit 校验表单时利用 ajax 的 return false 无效问题
- Unity中遇到的小问题——OnTriggerEnter条件