MySql链接查询条件匹配

1.首先说明是三个表要进行链接查询,就是根据where的条件的写法位置不一样会产生不同的结果
2.不明白这是为什么,and条件都是并列的,不管先后顺序应该输出的结果集是一样的
3.代码如下:
3.1 输出结果0个

SELECT orders.* FROM `orders` LEFT JOIN `order_card_items` 
ON `order_card_items`.`order_id`='orders.id' LEFT JOIN `cards` ON 
`order_card_items`.`card_code`='cards.card_code'
 WHERE ((((`orders`.`created_at` >= 0) AND (`orders`.`created_at` <= 1474613421)) 
 AND (`orders`.`type`=1)) AND (`order_card_items`.`flow_number`='10')) 
 AND (`cards`.`provider_id`='400008');
Empty set, 1 warning (0.00 sec)

3.2输出结果60个

SELECT `orders`.* FROM `orders` LEFT JOIN `order_card_items` ON `orders`.`id` = `order_card_items`.`order_id` LEFT JOIN `cards` ON `order_card_items`.`card_code` = `cards`.`card_code` WHERE (((((`orders`.`created_at` >= 0) AND (`orders`.`created_at` <= 1474613722)) AND (`orders`.`type`=1)) AND (`order_card_items`.`flow_number`='10')) AND (`cards`.`provider_id`='400008')) 
阅读 2.2k
1 个回答

left join采用的是左连接,以左为主,所以更你的and顺序是由关系的。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题