亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

多表刪除問題

輸入命令: 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 不明白,求各位大神指點迷津。

正在回答

3 回答

因為where相當于對鏈接后的呈現的表再進行了一步操作:條件就是只展示a.goods_id>b.goods_id。根據子查詢生成的b表本身只有兩條數據(這兩條數據本身就是tdb_goods中的重復數據,a中一定也存在而且一共為4條),其中符合進一步篩選條件的只有兩條。

1 回復 有任何疑惑可以回復我~
#1

慕姐6048975 提問者

感覺比較明白了,謝謝!
2016-12-05 回復 有任何疑惑可以回復我~

我也這里不明白啊,求解答啊。我也做了你的這個實驗發現是這樣的。一直想不明白。

0 回復 有任何疑惑可以回復我~
#1

小一的學習筆記

不就是因為有了一個where語句所以又進行了一次過濾,所以兩種的結果是一樣的。但個人更傾向于INNER JOIN 因為返回的是兩張表相同的數據
2017-02-18 回復 有任何疑惑可以回復我~

LEFT join 左連接顯示結果為a表中和b表中的公有字段以及a中的內容

0 回復 有任何疑惑可以回復我~
#1

慕姐6048975 提問者

上下兩條命令,為什么后面多了一個where a.goods_id>b.goods_id 結果就差那么遠呢?
2016-12-05 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
與MySQL的零距離接觸
  • 參與學習       396743    人
  • 解答問題       3497    個

本課程涵蓋全部MySQL數據庫的基礎,學習MySQL數據庫的基礎知識

進入課程

多表刪除問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號