求SQL。由於資料庫資料異常,求找出表A主鍵id相同,表資料記錄不一樣的記錄明細。舉例說明

2022-10-05 22:15:59 字數 4333 閱讀 9632

1樓:

select distinct t1.*

from tablea t1,tablea t2where t1.id=t2.id

and (t1.col1<>t2.col1 or t1.col2<>t2.col2)

2樓:

問題就有錯,a 主鍵id相同,根本不可能。

或者說你的資料表,用兩個欄位作主鍵,

查詢兩個相同表中不同記錄,這樣的sql語句怎麼寫

3樓:懿灬芫

可以用求非交集的辦法獲取這些記錄,寫法可以多種多樣,具體要視表結構和比對要求而定。

假設a、b兩表結構一樣,選出兩張表中id欄位互不相同的記錄

select * from a where not exists

(select 1 from b where b.id=a.id)

union all

select * from b where not exists

(select 1 from a where a.id=b.id);

說明:第一個子查詢選出a表中未出現於b表裡的記錄;第二個子查詢選出b表中未出現於a表裡的記錄。兩者合併即為互不相同的記錄。

結構化查詢語言(structured query language)簡稱sql(發音:/ˈes kjuː ˈel/ "s-q-l"),是一種特殊目的的程式語言,是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更新和管理關聯式資料庫系統;同時也是資料庫指令碼檔案的副檔名。

結構化查詢語言是高階的非過程化程式語言,允許使用者在高層資料結構上工作。它不要求使用者指定對資料的存放方法,也不需要使用者瞭解具體的資料存放方式,所以具有完全不同底層結構的不同資料庫系統, 可以使用相同的結構化查詢語言作為資料輸入與管理的介面。結構化查詢語言語句可以巢狀,這使它具有極大的靈活性和強大的功能。

mysql資料庫完全相同的兩個表,所存資料不同,合併時由於主鍵id重複,無法合併,請問如何處理?

4樓:小童鞋_成

-- 我來用集合查詢給你合併

create table 表名 as (select * from 表名1 union select * from 表名2)

sql語句查詢出的兩行資料除了主鍵其他都一樣,怎麼去掉重複資料 5

5樓:萬能導師

1、首先建立一個百位表,並在該表中插入重複的記錄,如下圖所示。

2.在插入之後,我們可以看到表中有重複的度數資料,如下圖所示。

3.接下來,我們必須記住在刪除之前要備份,如下圖所示。

4.可以使用不同的欄位設定排除重複的記錄,如下圖所示,然後將重複資料插入新表中。

5.然後,您將在資料表下看到一個新構建的表,如下圖所示。

6.最後,開啟新表,可以看到沒有重複的資料,如下圖所示。

6樓:

這用的著去重麼? 你主鍵都不一樣,那肯定是兩條資料了,即使後面資料全一樣也不用去重了,否則你的主鍵設定就是有問題的.

7樓:匿名使用者

select * from 表名 where 主鍵 in (select a.主鍵 from 表 a, 表b where a.主鍵》b.主鍵

and rtrim(a.非主鍵欄位)=rtrim(b.非主鍵欄位));

注:a.非主鍵欄位和b.非主鍵欄位要相同

8樓:我又強力了

根據出來主鍵之外的列分組

9樓:

表test 有欄位

id,a

select distinct a from test

10樓:螢飛

用關鍵字distinct ,就可以解決了。

sql查詢資料庫,某個欄位不同,其他相同,只保留一個記錄。具體看問題補充

11樓:

可以這樣寫

select distinct id , name , max(yy) from a

group by id , name

取id和name相同的最大yy,這樣就只保留一條記錄。

12樓:匿名使用者

select id,name,max(yy)

from 表

group by id,name

13樓:匿名使用者

select distinct t.id,t.name,t.

yy fromm tablename t,tablename t1 where t.yy<>t1.yy and t.

id = t1.id and t.name = t1.

name

兩個資料庫中各有一張資料結構、欄位相同的表,但表的資料記錄略有不同,怎樣比較出重複資料並顯示?

14樓:

use db_a

select distinct * from(select * from test where exists (select * from db_b.test)) into temp;

delete from test;

select * from temp into test;

drop table temp;

思路應該就是這樣,沒測試。如果需要j經常進行這樣的操作,可以把上面的語句放在一個儲存過程過程中,需要的時候可以隨時執行了。

15樓:匿名使用者

我有些小小的問題哈,既然你的最終目的是兩庫同步,那麼直接把兩庫合併union all不就行了?另外是不是隻是b庫的資料比a庫多(因為id,name,bm重複造成),a庫不會比b庫多?如果b庫的同一個id,name,bm組合有重複記錄,而xb,zz內容又不相同,怎麼取捨?

忘了最重要的一個問題,是什麼資料庫?俺只會oracle,別的只能講原理,不會寫語句。

16樓:

辦法有2,

1、跨庫查詢

2、將一個庫中的資料匯出,再倒入到另一個庫,然後再做查詢。

17樓:夕梅靳雀

如果quotationart表沒有定義主鍵,那麼你可以利用建立臨時表來儲存,寫法如下:

select

distinct

seq,

art_no,

quotation

into

quotationart_tmp fromquotationart

資料庫刪除內容重複的行(除主鍵id之外其他列值都相同)

18樓:

如果id沒有和其他表關聯 那就select distinct 其他欄位到臨時表 然後刪除原表 把臨時表的記錄insert進來就可以

19樓:康熙轉世

delete from table_name

where id not in (select max(id) from table_name group by column_name1,column_name2,column_name3。。。。。。)

其他列都group by出來就行了

資料庫表中有10條資料,除了主鍵id不同,其餘資料完全相同,怎樣用一條sql語句刪除其中的9條資料,即去重

20樓:匿名使用者

select * from 表 where id in (select min(id) from 表 group by 欄位1,欄位2,欄位3)

欄位1,欄位2,欄位3這個地方,你需要把其他欄位一起都group by了

21樓:轉520角

假如這10條中有一條的id是1,其餘的不管,那麼這樣 delete from table_name where id <> 1;

22樓:

像這樣:select distinct t,s from table;distinct的時候不要把id帶出來

23樓:lr這樣

select id, count(distinct name) from 表名 group by id (name 為其他列中的一個)

試試看,行就採納。 謝謝

24樓:匿名使用者

delete from table where id in (select top 9 id from table)

求sql資料庫考試題答案,SQL資料庫考試試題,求高手解答

1.create database readbookon name readbook data,filename d server readbook data.mdf size 2mb,maxsize 10mb,filegrowth 1mb log on name readbook log,file...

資料庫sql這樣怎麼辦,SQL資料庫太大怎麼辦

解決方法步驟如下 1 首先開啟sqlserver management studio,登入身份選擇windows身份驗證,點選連線。2 進入管理器中,選擇資料庫,右鍵,在彈出的選單選擇 附加 如圖所示,選擇要附加的檔案後,點選附加,如果沒有報錯,則完成附加,否則,需要接下來的資料修復。3 報錯,附加...

求刪除SQL資料庫中某個表的重複資料

1.先將umane用一個臨時表存起來 select distinct uname uname into a form users 2.刪除users表內的資料 delete from users 3.把臨時表使用者加到users表中,並將預設upwd全設為1234要看你upwd是什麼資料型別 如果是...