多表刪除問題
輸入命令: SELECT a.goods_id,a.goods_name FROM tdb_goods AS a LEFT JOIN (SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING COUNT(goods_name)>1) AS b ?ON a.goods_name = b.goods_name ;
顯示的是tdb_goods 的所有選項
但是在后面加上WHERE a.goods_id > b.goods_id,就只顯示兩條結果
?命令:SELECT a.goods_id,a.goods_name FROM tdb_goods AS a LEFT JOIN (SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING COUNT(goods_name)>1) AS b ?ON a.goods_name = b.goods_name WHERE a.goods_id > b.goods_id;
結果:
+----------+-------------------------+
| goods_id | goods_name ? ? ? ? ? ? ?|
+----------+-------------------------+
| ? ? ? 26 | ?HMZ-T3W 頭戴顯示設備
| ? ? ? 27 | 玄龍精英版 筆記本散熱器
+----------+-------------------------+
2 rows in set (0.00 sec)
前后只是差了一個條件,如果把LEFT JION 改成RIGHT JION 或者 INNER JION 我都可以理解,就是LEFT JION 不明白,求各位大神指點迷津。
2016-12-05
因為where相當于對鏈接后的呈現的表再進行了一步操作:條件就是只展示a.goods_id>b.goods_id。根據子查詢生成的b表本身只有兩條數據(這兩條數據本身就是tdb_goods中的重復數據,a中一定也存在而且一共為4條),其中符合進一步篩選條件的只有兩條。
2017-01-17
我也這里不明白啊,求解答啊。我也做了你的這個實驗發現是這樣的。一直想不明白。
2016-12-02
LEFT join 左連接顯示結果為a表中和b表中的公有字段以及a中的內容