这两条sql条件执行在join前还是join后
SELECT ir.* FROM ir LEFT JOIN i ON ir.item_id=i.id AND ir.id=20;
| id | gold   | item_id | item_n | name      |
+----+--------+---------+--------+-----------+
| 10 | 100000 |       0 |      0 | NULL      |
| 20 |      0 |    5165 |     10 | 物品名字  |
| 30 |      0 |    5011 |      2 | NULL      |
| 40 |      0 |    5136 |      5 | NULL      |
| 50 |      0 |    5167 |     15 | NULL      |
| 60 |      0 |    5144 |      1 | NULL      |
| 70 |      0 |    5145 |      4 | NULL      |
| 80 |      0 |    5168 |     15 | NULL      |
| 90 |      0 |    5166 |     15 | NULL      |
SELECT ir.* FROM ir LEFT JOIN i ON ir.item_id=i.id WHERE ir.id=20;
| 20 |      0 |    5165 |     10 | 物品名字  |
查询结果颠覆了我的认知,不是说on的条件在join前执行么,那第一种应该在join前就把其他8条记录给否决掉了,怎么看起来 AND ir.id=20 完全没起作用
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------对。你用inner join 就知道了。
------解决方案--------------------left join是左边表的内容全部显示出来,然后右边得表显示和左边得表匹配得结果
你可以全部打印出来两个表的列  就能看出来点东西了  
不要只打印左边得那个表