欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL?Delete使用示例詳解

 更新時(shí)間:2025年01月24日 10:29:03   作者:F_D_Z  
文章主要介紹了如何使用SQL中的DELETE語句刪除表中滿足特定條件的行,包括刪除所有行和根據(jù)條件刪除部分行,討論了WHERE子句的使用方法,通過示例,展示了如何刪除所有重復(fù)的電子郵件,只保留一個(gè)具有最小id的唯一電子郵件,感興趣的朋友一起看看吧

語法

DELETE刪除表中所需內(nèi)容

刪除表中滿足特點(diǎn)條件的行:DELETE FROM 表名 WHERE 條件;

刪除表中所有行:DELETE FROM 表名;

WHERE子句

  • WHERE子句用于指定從表中選取記錄的條件。
  • 允許篩選數(shù)據(jù),只返回滿足特定條件的記錄。
  • WHERE子句可以包含各種條件,這些條件可以基于一個(gè)或多個(gè)列的值。
  • 可以使用邏輯運(yùn)算符(如AND、OR、NOT)來組合多個(gè)條件。
  • 后文示例可供提供and和not的用法。

子查詢

子查詢(Sub Query)或稱為內(nèi)查詢(Inner Query)、嵌套查詢(Nested Query),是SQL語言中一種常用的程序模塊,用于在一個(gè)查詢語句中嵌套另一個(gè)查詢語句。當(dāng)一個(gè)查詢的結(jié)果是另一個(gè)查詢的條件時(shí),這個(gè)查詢就被稱為子查詢。

子查詢必須括在圓括號中。子查詢SELECT子句通常只有一個(gè)列,除非主查詢中多個(gè)列與子查詢中的列進(jìn)行比較。子查詢不能直接使用ORDER BY,但可以在子查詢中使用GROUP BY。返回多行數(shù)據(jù)的子查詢只能與多值操作符(如IN)一起使用。

需求

表: Person

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| email       | varchar |
+-------------+---------+
id 是該表的主鍵列(具有唯一值的列)。
該表的每一行包含一封電子郵件。電子郵件將不包含大寫字母。

編寫解決方案 刪除 所有重復(fù)的電子郵件,只保留一個(gè)具有最小 id 的唯一電子郵件。

運(yùn)行腳本后,顯示的答案是 Person 表。驅(qū)動(dòng)程序?qū)⑹紫染幾g并運(yùn)行代碼片段,然后再顯示 Person 表。Person 表的最終順序 無關(guān)緊要 。

示例

輸入:

Person 表:
+----+------------------+
| id | email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
| 3  | john@example.com |
+----+------------------+
輸出: 
+----+------------------+
| id | email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
+----+------------------+

分析

編寫解決方案 刪除 所有重復(fù)的電子郵件,只保留一個(gè)具有最小 id 的唯一電子郵件。

相當(dāng)于刪除所有id較大且重復(fù)的電子郵箱

僅提供一個(gè)Person表,包含id和email

可以直接作笛卡爾積,比較id大小和電子郵箱,刪除所有id較大且相同的電子郵箱

通過where語句和and并列即可實(shí)現(xiàn),where a.id>b.id and a.email=b.email

同樣的思路,也可以通過子查詢實(shí)現(xiàn)

通過子查詢查找id最小的電子郵箱,

select min(id) as id from Person group by email

再通過where not in 剔除其他信息

where id not in 
(
   select id from 
   (
       select min(id) as id 
       from Person 
       group by email
   ) u
)

代碼

delete a
from Person a, Person b
where a.id>b.id and a.email=b.email

OR

delete from Person
where id not in 
(
   select id from 
   (
       select min(id) as id 
       from Person 
       group by email
   ) a
)

到此這篇關(guān)于SQL Delete使用的文章就介紹到這了,更多相關(guān)SQL Delete使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論