sql語句去重
sql語句通過DISTINCT關鍵字去重, 用于返回唯一不同的值。DISTINCT關鍵字需要搭配SELECT 語句使用,語法為SELECT DISTINCT 列名稱 FROM 表名稱。如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的項就必須出現在選擇列表中,否則會出現錯誤。
擴展資料:
distinct這個關鍵字用來過濾掉多余的重復記錄只保留一條,但往往只用它來返回不重復記錄的條數,而不是用它來返回不重記錄的所有值。其原因是distinct只有用二重循環查詢來解決,而這樣對于一個數據量非常大的站來說,無疑是會直接影響到效率的。
distinct必須放在開頭,distinct語句中select顯示的字段只能是distinct指定的字段,其他字段是不可能出現的。
一句SQL查詢 要求去除重復語句
declare @tid nvarchar(50),@username nvarchar(50),@oldusername nvarchar(50),@str nvarchar(150),@sql nvarchar(max)
set @str=''
declare g_cursor cursor for
SELECT *,*me
FROM `pw_threads` AS t, pw_members AS u
WHERE *id = *
AND NOT isnull( * )
ORDER BY postdate DESC
open g_cursor
fetch next from g_cursor into @tid,@username
while @@FETCH_STATUS=0
begin
if @oldusername <> @username
set @str+=''+@tid+''+','
fetch next from g_cursor into @tid,@username
end
close g_cursor
deallocate g_cursor
if @str <> ''
begin
set @str=SUBSTRING(@str,1,LEN(@str)-1)
set @sql='select top 3 * from `pw_threads` AS t where tid in (@tid)'
exec @sql
end
如何用SQL語句去掉重復記錄
COL1 中有重復記錄(COL1,COL2為主鍵),如何刪除
1、有少數重復記錄(在col1,col2上有索引比較好)
DELETE T
WHERE (COL1,COL2) IN
(SELECT COL1,COL2 FROM T GROUP BY COL1,COL2 HAVING COUNT(*) >1)
AND
ROWID NOT IN
(SELECT MIN(ROWID) FROM T GROUP BY COL1,COL2 HAVING COUNT(*) >1)
2、大部份記錄有重復記錄
DELETE T WHERE ROWID NOT IN
(SELECT MIN(ROWID) FROM T GROUP BY COL1,COL2)
3、其他寫法
DELETE T WHERE ROWID IN
(SELECT * FROM T A,T B
WHERE *1=*1 AND *2 = *2 AND * >*)
######################################
10. 刪除重復記錄
最高效的刪除重復記錄方法 ( 因為使用了ROWID)
DELETE FROM EMP E
WHERE * >(SELECT MIN(*)
FROM EMP X
WHERE *_NO = *_NO);
11. 用TRUNCATE替代DELETE
當刪除表中的記錄時,在通常情況下, 回滾段(rollback segments ) 用來存放可以被恢復的信息. 如果你沒有COMMIT事務,ORACLE會將數據恢復到刪除之前的狀態(準確地說是
恢復到執行刪除命令之前的狀況)
而當運用TRUNCATE時, 回滾段不再存放任何可被恢復的信息.當命令運行后,數據不能被恢復.因此很少的資源被調用,執行時間也會很短.
(譯者按: TRUNCATE只在刪除全表適用,TRUNCATE是DDL不是DML)
12. 盡量多使用COMMIT
只要有可能,在程序中盡量多使用COMMIT, 這樣程序的性能得到提高,需求也會因為COMMIT所釋放的資源而減少:
COMMIT所釋放的資源:
a. 回滾段上用于恢復數據的信息.
b. 被程序語句獲得的鎖
c. redo log buffer 中的空間
d. ORACLE為管理上述3種資源中的內部花費
sql語句去重
sql語句通過DISTINCT關鍵字去重, 用于返回唯一不同的值。
DISTINCT關鍵字需要搭配SELECT 語句使用,語法為SELECT DISTINCT 列名稱 FROM 表名稱。如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的項就必須出現在選擇列表中,否則會出現錯誤。
擴展資料: distinct這個關鍵字用來過濾掉多余的重復記錄只保留一條,但往往只用它來返回不重復記錄的條數,而不是用它來返回不重記錄的所有值。其原因是distinct只有用二重循環查詢來解決,而這樣對于一個數據量非常大的站來說,無疑是會直接影響到效率的。
distinct必須放在開頭,distinct語句中select顯示的字段只能是distinct指定的字段,其他字段是不可能出現的。
sql語句中DISTINCT是什么意思
DISTINCT 這個關鍵詞的意思是用于返回唯一不同的值。
在表中,可能會包含重復值。這并不成問題,不過,有時您也許希望僅僅列出不同(distinct)的值。SELECT DISTINCT 表示查詢結果中,去掉了重復的行;Distinct表示去掉重復的行。
擴展資料:
sql語句中使用DISTINCT的注意事項:
如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的項就必須出現在選擇列表中,否則會出現錯誤。
比如SQL語句:SELECT DISTINCT Company FROM Orders order by Company ASC是可以正常執行的。
但是如果SQL語句是:SELECT DISTINCT Company FROM Orders order by Num ASC是不能正確執行的,在ASP中會提示“ORDER BY 子句與 (Num) DISTINCT 沖突”錯誤。
SQL語句修改成:SELECT DISTINCT Company,Num FROM Orders order by Num ASC可以正常執行
參考資料:搜狗百科-DISTINCT
sql語句去重
---你上面寫的
delete x
from A x
where * > (select min(id) from A y where x.A1 = y.A1 and x.A2=y.A2);
--方法一
delete y
from A y
where * not in
(
select min(id) id
from A
group by A1,A2
) x
--方法二
--第一步
select min(id) id,A1,A2
into #aa
from A
group by A1,A2
--第二步
truncate table A
--第三步
insert into A
select *
from #aa
drop table #aa