色偷偷91综合久久噜噜-色偷偷成人-色偷偷尼玛图亚洲综合-色偷偷人人澡久久天天-国内精品视频一区-国内精品视频一区二区三区

Hello! 歡迎來到小浪云!


如何通過一條 SQL 語句實現跨多表刪除相關記錄?


avatar
小浪云 2024-11-11 188

如何通過一條 SQL 語句實現跨多表刪除相關記錄?

通過單一語句實現跨多表刪除

問題:

如何通過一條 sql 語句實現從多個表中刪除相關記錄?

示例:

假設有以下三個表:

  • dish
  • dish_flavor
  • setmeal_dish

需要使用一條 sql 語句刪除 dishid 為 51 和 52 的記錄及其在 dish_flavor 和 setmeal_dish 表中的相關記錄。

嘗試的 sql 語句:

delete dish, dish_flavor, setmeal_dish from dish, dish_flavor, setmeal_dish   where dish.id = dish_flavor.id and dish.id = setmeal_dish.id and dish.id in (51, 52);
登錄后復制

執行結果:

第三張表為空,但前兩張表中的數據未刪除。

分析:

原始 sql 語句使用內連接從三張表中查找符合條件的記錄。然而,由于第三張表沒有符合條件的數據,因此內連接篩選出的記錄數為零,導致前兩張表中的數據也無法刪除。

解決方案:

要解決這個問題,可以使用左連接。左連接保證了即使在第三張表中沒有找到匹配的記錄,也可以刪除與前兩張表中符合條件的 id 關聯的記錄。

修改后的 sql 語句:

DELETE dish, dish_flavor, setmeal_dish  FROM     dish      LEFT JOIN dish_flavor ON dish.id = dish_flavor.id     LEFT JOIN setmeal_dish ON dish.id = setmeal_dish.id WHERE     dish.id IN ( 51, 52 );
登錄后復制

使用左連接后,只要前兩張表中有匹配的 id,無論第三張表中是否存在記錄,都會刪除記錄。

相關閱讀

主站蜘蛛池模板: 成人97| 国产一级片免费观看 | 色婷婷色婷婷 | 综合伊人久久在一二三区 | 婷婷综合激情网 | 亚洲伊人久久网 | 亚洲 欧美 日韩中文字幕一区二区 | 韩国精品欧美一区二区三区 | 国产精品 第二页 | 性满足久久久久久久久 | 高清色惰www日本午夜 | aaaa一级片 | 337p欧美| 成人在线视频网址 | va亚洲va欧美va国产综合 | 一级黄色片片 | 97总资源| 色综合久久综合欧美综合网 | 久久青草国产精品一区 | 国产成人亚洲精品77 | 久久精品视频免费观看 | 一级毛片免费播放 | 精品一区国产 | 在线黄色小视频 | 在线国产一区 | 97人人模人人爽视频一区二区 | 欧美特级黄色片 | 色网站免费看 | 99久久国产综合精品swag超清 | 老湿机69福利免费体验区 | 天天射天天操天天干 | 国产日产亚洲精品 | 四虎影视国产精品永久在线 | 91精品欧美一区二区综合在线 | 曰本女同互慰高清在线观看 | 亚洲图片一区二区三区 | 色avav| 国产欧美另类久久精品91 | 色婷婷久久综合中文网站 | 日本久久久久 | 一级性毛片 |