SQL?Delete使用示例詳解
語法
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)文章希望大家以后多多支持腳本之家!
- Mysql數(shù)據(jù)庫如何使用DELETE語句從數(shù)據(jù)庫表中刪除數(shù)據(jù)(數(shù)據(jù)庫數(shù)據(jù)刪除)
- MySQL語句之刪除指令deleted和truncate在使用中的異同詳解
- 解析MySQL中DELETE語句中別名的使用
- MySQL中UPDATE與DELETE語句的使用教程
- mysql delete limit 使用方法詳解
- ORACLE SQL-UPDATE、DELETE、INSERT優(yōu)化和使用技巧分享
- sqlserver中delete、update中使用表別名和oracle的區(qū)別
- MySQL DELETE語法使用詳細(xì)解析
- MySQL刪除數(shù)據(jù)Delete與Truncate語句使用比較
相關(guān)文章
clickhouse介紹、安裝、數(shù)據(jù)類型、sql操作
ClickHouse是俄羅斯的Yandex于2016年開源的列式存儲(chǔ)數(shù)據(jù)庫(DBMS),使用C++語言編寫,主要用于在線分析處理查詢(OLAP),能夠使用SQL查詢實(shí)時(shí)生成分析數(shù)據(jù)報(bào)告,這篇文章主要介紹了clickhouse介紹、安裝、數(shù)據(jù)類型、sql操作的相關(guān)知識,需要的朋友可以參考下2025-04-04SQL Server復(fù)制刪除發(fā)布時(shí)遇到錯(cuò)誤18752的問題及解決方法
朋友反饋他無法刪除一臺SQL Server數(shù)據(jù)庫上的發(fā)布,具體情況為刪除一個(gè)SQL Server Replication的發(fā)布時(shí),遇到這樣的錯(cuò)誤問題如何解決呢,下面小編給大家分享SQL Server復(fù)制刪除發(fā)布時(shí)遇到錯(cuò)誤18752的問題及解決方法,感興趣的朋友一起看看吧2024-01-01sql?server如何去除數(shù)據(jù)中的一些無用的空格
這篇文章主要介紹了sql?server去除數(shù)據(jù)中的一些無用的空格,本文給大家提到了一些常用的函數(shù),結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05SQl Function 創(chuàng)建函數(shù)實(shí)例介紹
這篇文章主要介紹了SQl Function 創(chuàng)建函數(shù)實(shí)例介紹,需要的朋友可以參考下2016-10-10INSERT INTO SELECT語句與SELECT INTO FROM語句的一些區(qū)別
INSERT INTO SELECT語句與SELECT INTO FROM語句的一些區(qū)別介紹,需要的朋友可以參考下面的說明與條件2012-05-05Godaddy 導(dǎo)入導(dǎo)出MSSQL數(shù)據(jù)庫的實(shí)現(xiàn)步驟
可以從限制文件中導(dǎo)入SQL共享服務(wù)器數(shù)據(jù)庫。如果想把存放在其他地方的數(shù)據(jù)導(dǎo)入,需要先把其內(nèi)容拷到限制文件中。(2010-02-02SQL Server利用bcp命令把SQL語句結(jié)果生成文本文件
在SQL Server里可以調(diào)用DOS下的命令行工具bcp來實(shí)現(xiàn)把表里的數(shù)據(jù)或者SQL語句結(jié)果生成文本文件,詳細(xì)看下操作方法,感興趣的你可不要錯(cuò)過了哈2013-02-02