SQL?Delete使用示例詳解
語法
DELETE刪除表中所需內(nèi)容
刪除表中滿足特點條件的行:DELETE FROM 表名 WHERE 條件;
刪除表中所有行:DELETE FROM 表名;
WHERE子句
WHERE
子句用于指定從表中選取記錄的條件。- 允許篩選數(shù)據(jù),只返回滿足特定條件的記錄。
WHERE
子句可以包含各種條件,這些條件可以基于一個或多個列的值。- 可以使用邏輯運算符(如
AND
、OR
、NOT
)來組合多個條件。 - 后文示例可供提供and和not的用法。
子查詢
子查詢(Sub Query)或稱為內(nèi)查詢(Inner Query)、嵌套查詢(Nested Query),是SQL語言中一種常用的程序模塊,用于在一個查詢語句中嵌套另一個查詢語句。當一個查詢的結(jié)果是另一個查詢的條件時,這個查詢就被稱為子查詢。
子查詢必須括在圓括號中。子查詢SELECT子句通常只有一個列,除非主查詢中多個列與子查詢中的列進行比較。子查詢不能直接使用ORDER BY,但可以在子查詢中使用GROUP BY。返回多行數(shù)據(jù)的子查詢只能與多值操作符(如IN)一起使用。
需求
表: Person
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| id | int |
| email | varchar |
+-------------+---------+
id 是該表的主鍵列(具有唯一值的列)。
該表的每一行包含一封電子郵件。電子郵件將不包含大寫字母。
編寫解決方案 刪除 所有重復的電子郵件,只保留一個具有最小 id
的唯一電子郵件。
運行腳本后,顯示的答案是 Person
表。驅(qū)動程序?qū)⑹紫染幾g并運行代碼片段,然后再顯示 Person
表。Person
表的最終順序 無關緊要 。
示例
輸入:
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 |
+----+------------------+
分析
編寫解決方案 刪除 所有重復的電子郵件,只保留一個具有最小 id 的唯一電子郵件。
相當于刪除所有id較大且重復的電子郵箱
僅提供一個Person表,包含id和email
可以直接作笛卡爾積,比較id大小和電子郵箱,刪除所有id較大且相同的電子郵箱
通過where語句和and并列即可實現(xiàn),where a.id>b.id and a.email=b.email
同樣的思路,也可以通過子查詢實現(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 )
到此這篇關于SQL Delete使用的文章就介紹到這了,更多相關SQL Delete使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- 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語法使用詳細解析
- MySQL刪除數(shù)據(jù)Delete與Truncate語句使用比較
相關文章
clickhouse介紹、安裝、數(shù)據(jù)類型、sql操作
ClickHouse是俄羅斯的Yandex于2016年開源的列式存儲數(shù)據(jù)庫(DBMS),使用C++語言編寫,主要用于在線分析處理查詢(OLAP),能夠使用SQL查詢實時生成分析數(shù)據(jù)報告,這篇文章主要介紹了clickhouse介紹、安裝、數(shù)據(jù)類型、sql操作的相關知識,需要的朋友可以參考下2025-04-04SQL Server復制刪除發(fā)布時遇到錯誤18752的問題及解決方法
朋友反饋他無法刪除一臺SQL Server數(shù)據(jù)庫上的發(fā)布,具體情況為刪除一個SQL Server Replication的發(fā)布時,遇到這樣的錯誤問題如何解決呢,下面小編給大家分享SQL Server復制刪除發(fā)布時遇到錯誤18752的問題及解決方法,感興趣的朋友一起看看吧2024-01-01sql?server如何去除數(shù)據(jù)中的一些無用的空格
這篇文章主要介紹了sql?server去除數(shù)據(jù)中的一些無用的空格,本文給大家提到了一些常用的函數(shù),結(jié)合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05SQl Function 創(chuàng)建函數(shù)實例介紹
這篇文章主要介紹了SQl Function 創(chuàng)建函數(shù)實例介紹,需要的朋友可以參考下2016-10-10INSERT INTO SELECT語句與SELECT INTO FROM語句的一些區(qū)別
INSERT INTO SELECT語句與SELECT INTO FROM語句的一些區(qū)別介紹,需要的朋友可以參考下面的說明與條件2012-05-05Godaddy 導入導出MSSQL數(shù)據(jù)庫的實現(xiàn)步驟
可以從限制文件中導入SQL共享服務器數(shù)據(jù)庫。如果想把存放在其他地方的數(shù)據(jù)導入,需要先把其內(nèi)容拷到限制文件中。(2010-02-02SQL Server利用bcp命令把SQL語句結(jié)果生成文本文件
在SQL Server里可以調(diào)用DOS下的命令行工具bcp來實現(xiàn)把表里的數(shù)據(jù)或者SQL語句結(jié)果生成文本文件,詳細看下操作方法,感興趣的你可不要錯過了哈2013-02-02