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

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

刪除表中重復項的問題

在這里刪除的時候,INNER JOIN 和 LEFT JOIN 效果時一樣的,我想知道為什么?

正在回答

2 回答

inner join和left join最后刪除的效果是一樣的。但這兩條sql在執行過程中的原理是不一樣的。之所以最后執行的效果相同,是因為where子句把二者查詢的不同數據給過濾掉了。

  1. inner join的情況下,t2表查到了2條數據,這個結果是子查詢 查到的,是固定的。t1表根據連接條件查到了4條數據,在where子句過濾之后就剩下符合條件的兩條語句了。

  2. left join的情況下,t2表查到了2條數據,和上面的結果是一樣的。t1表根據連接條件會將所有的結果都查出來,因為左連接是以t1表為主的。然后,在where子句過濾之后又只剩下了符合條件的兩條語句了。

    綜上所述,關鍵是在where子句。你可以這樣測試一下,使用下面的兩條語句查詢一下:

    select * from tdb_goods AS t1 left join ( select goods_id,goods_name from tdb_goods group by goods_name having count(goods_name)>1 ) AS t2 on t1.goods_name=t2.goods_name;

    select * from tdb_goods AS t1 inner join ( select goods_id,goods_name from tdb_goods group by goods_name having count(goods_name)>1 ) AS t2 on t1.goods_name=t2.goods_name;


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

qq_喬克叔叔_03170904 提問者

謝謝。有點明白了
2017-01-17 回復 有任何疑惑可以回復我~
#2

qq_喬克叔叔_03170904 提問者

但其實我的問題可能是這樣的http://www.xianlaiwan.cn/qadetail/186087
2017-01-17 回復 有任何疑惑可以回復我~

因為引用的是自身的表中數據。不牽扯到多表,所以沒有所謂的交集,也就效果相同

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

舉報

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

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

進入課程

刪除表中重復項的問題

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

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

幫助反饋 APP下載

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

公眾號

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