Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

¦p¦ó¥ÎSQL°£¥h¤Gµ§§¹¥þ¤@¼Ëªº¨ä¤¤¤@µ§?

5 views
Skip to first unread message

Jye Lu

unread,
Apr 14, 1997, 3:00:00 AM4/14/97
to

漢堡 <sc...@ms1.hinet.net> wrote:
> 在Table中,有二筆資料是一模一樣的,請問要如何
> 下SQL來去除其中一筆??

如果沒記錯, SQL 是用在relational database吧?
那table 怎麼可能有兩筆資料是一模一樣的?

漢堡

unread,
Apr 14, 1997, 3:00:00 AM4/14/97
to

於 14 Apr 1997 04:10:59 GMT, Jye Lu <j...@db.csie.ncu.edu.tw> 的文章中提到:

同樣的insert動作做二次,就有二筆了啊!

================================================
寄信人:劉先章 From:David Liu(Liu,shian-Chang)

郵件地址(E-Mail):sc...@ms1.hinet.net
================================================

unread,
Apr 14, 1997, 3:00:00 AM4/14/97
to

假設你的table為"x",裡面有個column叫"aa"
1.首先create一個table去除重複的資料
CREATE TABLE z
AS SELECT *
FROM x
GROUP BY aa
2.刪除table "x"
DROP TABLE x
3.把table z 改回 table x
RENAME z TO x

不知道還有沒有別的方法說 :P


漢堡 <sc...@ms1.hinet.net> 次寫入到主題
<33510dc0...@netnews.hinet.net>...
> 請問:
> 在Table中,有二筆資料是一模一樣的,請問要如何
> 下SQL來去除其中一筆??
> TKS!

unread,
Apr 14, 1997, 3:00:00 AM4/14/97
to

除非有任一column/columns為unique或primary key,否則不會違反integrity
constraint

Jye Lu <j...@db.csie.ncu.edu.tw> 次寫入到主題
<5iteug$ehk$1...@db.csie.ncu.edu.tw>...
> 漢堡 <sc...@ms1.hinet.net> wrote:
> > 同樣的insert動作做二次,就有二筆了啊!
>
> 正常情況下, DBMS應該不允許這樣的insert;
> 因為這會違反 integrity constraint
>
>

Jye Lu

unread,
Apr 14, 1997, 3:00:00 AM4/14/97
to

漢堡

unread,
Apr 14, 1997, 3:00:00 AM4/14/97
to

於 14 Apr 1997 14:28:32 GMT, Jye Lu <j...@db.csie.ncu.edu.tw> 的文章中提到:

我只要不設Primary key,就不會有問題,您可以試試看!
事實上,在我的Table中,就是有這種情形,不然,我就不
會提出來問了!

漢堡

unread,
Apr 14, 1997, 3:00:00 AM4/14/97
to

於 14 Apr 1997 14:44:26 GMT, "避" <ball...@usa.net> 的文章中提到:

>假設你的table為"x",裡面有個column叫"aa"
>1.首先create一個table去除重複的資料
> CREATE TABLE z
> AS SELECT *
> FROM x
> GROUP BY aa

select * 和 group by aa會互相違背,您可以試試看!


>2.刪除table "x"
> DROP TABLE x
>3.把table z 改回 table x
> RENAME z TO x
>
>不知道還有沒有別的方法說 :P
>
>
>漢堡 <sc...@ms1.hinet.net> 次寫入到主題
><33510dc0...@netnews.hinet.net>...
>> 請問:
>> 在Table中,有二筆資料是一模一樣的,請問要如何
>> 下SQL來去除其中一筆??
>> TKS!


其實,我是有一個方法,就是用bcp把資料全部抓下來,再
除去重複的資料,再用bcp把資料轉到tabl中!
但是這不是我想要的方法,我是希望直接用SQL指令來除
去相同的資料,請各位高手們,再給小弟一些建議吧!
謝謝!

菜虫

unread,
Apr 14, 1997, 3:00:00 AM4/14/97
to

※ 引述《sc...@ms1.hinet.net (漢堡)》之銘言:
: 於 14 Apr 1997 14:44:26 GMT, "避" <ball...@usa.net> 的文章中提到:

: >假設你的table為"x",裡面有個column叫"aa"
: >1.首先create一個table去除重複的資料
: > CREATE TABLE z
: > AS SELECT *
: > FROM x
: > GROUP BY aa
: select * 和 group by aa會互相違背,您可以試試看!
: >2.刪除table "x"
: > DROP TABLE x
: >3.把table z 改回 table x
: > RENAME z TO x
: >不知道還有沒有別的方法說 :P
: >漢堡 <sc...@ms1.hinet.net> 次寫入到主題
: ><33510dc0...@netnews.hinet.net>...
: 其實,我是有一個方法,就是用bcp把資料全部抓下來,再

: 除去重複的資料,再用bcp把資料轉到tabl中!
: 但是這不是我想要的方法,我是希望直接用SQL指令來除
: 去相同的資料,請各位高手們,再給小弟一些建議吧!
: 謝謝!
: ================================================
: 寄信人:劉先章 From:David Liu(Liu,shian-Chang)
: 郵件地址(E-Mail):sc...@ms1.hinet.net
: ================================================


假設你的table name=test2

其內僅二個欄位,t1 , t2 則.

select t1,t2 from test2 group by t1,t2 having count(t1)>1;

即可找出重複的資料;

至於要怎麼去除,則由你來控制cursor的移動來做到了!

不然,你可以用下法:

select t1,t2 dinst from test2;

則只會列出相同資料的一筆,然後將其放至另一個table中,再做處理即可....

--
※ 來源:台灣科技大學BBS(bbs.et.ntit.edu.tw) ◆來自: 140.118.38.202

Billy KOT

unread,
Apr 15, 1997, 3:00:00 AM4/15/97
to

On Mon, 14 Apr 1997 15:44:52 GMT, sc...@ms1.hinet.net (漢堡) wrote:

>於 14 Apr 1997 14:28:32 GMT, Jye Lu <j...@db.csie.ncu.edu.tw> 的文章中提到:
>
>>漢堡 <sc...@ms1.hinet.net> wrote:
>>> 同樣的insert動作做二次,就有二筆了啊!
>>
>> 正常情況下, DBMS應該不允許這樣的insert;
>> 因為這會違反 integrity constraint
>>
>我只要不設Primary key,就不會有問題,您可以試試看!
>事實上,在我的Table中,就是有這種情形,不然,我就不
>會提出來問了!
>

我看過了很多 POST 好像......

其實我想可以比較簡單一點就是
1. Backup 原來那二筆資料中的隨便一筆
2. 二筆都 Delete 丟
3. Restore 剛才 Backup 的那筆
4. 完了

至於如何 Backup 其中一筆的做法你可用 GROUP BY 所有欄位的方法
例如
1. SELECT * INTO #TempTable FROM TableName WHERE ...... GROUP BY
column1, column2, column3........
2. DELETE TableName WHERE ......
3. INSERT TableName SELECT * FROM #TempTable

Duen-Yuh Huang

unread,
Apr 15, 1997, 3:00:00 AM4/15/97
to

漢堡 wrote:
>
> 請問:
> 在Table中,有二筆資料是一模一樣的,請問要如何
> 下SQL來去除其中一筆??
> TKS!

How about "SELECT DISTINCT * FROM [TABLE]" command?
That would ensure that every record in that table is distinct.

superas...@bbs.ntu.edu.tw

unread,
Apr 15, 1997, 3:00:00 AM4/15/97
to

用SQL的話, 可能只能把重覆資料的ROWID找出來, 再用苦工殺掉其中一筆.
當然啦, 下次最好還是先設CONSTRAINT, 避免這個困擾.

漢堡

unread,
Apr 15, 1997, 3:00:00 AM4/15/97
to

於 Tue, 15 Apr 1997 10:53:21 +0800, superas...@bbs.ntu.edu.tw 的文章中提到:

>用SQL的話, 可能只能把重覆資料的ROWID找出來, 再用苦工殺掉其中一筆.
>當然啦, 下次最好還是先設CONSTRAINT, 避免這個困擾.

咦!Table有ROWID這種東東嗎?要怎麼用?如果真有的話,就太好了!
可否再說明詳細些,謝謝!

不名譽的壞小孩♂

unread,
Apr 15, 1997, 3:00:00 AM4/15/97
to

: 其實,我是有一個方法,就是用bcp把資料全部抓下來,再
: 除去重複的資料,再用bcp把資料轉到tabl中!
: 但是這不是我想要的方法,我是希望直接用SQL指令來除
: 去相同的資料,請各位高手們,再給小弟一些建議吧!
: 謝謝!
標準SQL不支援您想要的目的, 所以一定得透過程式碼才有法子解決.以我所知
的資料庫當中好像沒有任何一個支援您的要求, 所以最好是報上您使用的資料
庫軟體, 大家也許能幫您想個法兒.
From Sam..

海若無涯天作岸

unread,
Apr 15, 1997, 3:00:00 AM4/15/97
to

==> 在 "避" <ball...@usa.net> 的文章中提到:

> 假設你的table為"x",裡面有個column叫"aa"
> 1.首先create一個table去除重複的資料
> CREATE TABLE z
> AS SELECT *
> FROM x
> GROUP BY aa
> 2.刪除table "x"
> DROP TABLE x
> 3.把table z 改回 table x
> RENAME z TO x
> 不知道還有沒有別的方法說 :P

這個方法有個缺點, group by aa 而沒有aggregation 運算是不行的,

你的方法應該是:
1. CREATE TABLE z
AS SELECT distinct *
FROM x

不過這樣仍有個缺點,就是當總資料筆數大的時候(幾十萬筆),很佔空間,
建議使用下列方式:
1. select distinct * into TMPTABLE from YOURTABLE
group by Col1,Col2.... <- 到可以識別出相同的row時
having count(*)>1

2. delete YOURTABLE
where COL1+COL2+... in <- 這裡若是數字類記得轉成文字免得算錯
(select distinct COL1+COL2+... from TMPTABLE)

3. insert YOURTABLE select * from TMPTABLE

4. drop TMPTABLE

希望管用......

--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>

菜虫

unread,
Apr 15, 1997, 3:00:00 AM4/15/97
to

※ 引述《sc...@ms1.hinet.net (漢堡)》之銘言:
: 於 Tue, 15 Apr 1997 10:53:21 +0800, superas...@bbs.ntu.edu.tw 的文章中提到:

在oracle 中,要這麼下....

select rowid,field1,field2.... from table.....

rowid一定不一樣!!

jwk

unread,
Apr 17, 1997, 3:00:00 AM4/17/97
to

>> 正常情況下, DBMS應該不允許這樣的insert;
>> 因為這會違反 integrity constraint
>我只要不設Primary key,就不會有問題,您可以試試看!
>事實上,在我的Table中,就是有這種情形,不然,我就不
>會提出來問了!

有 rowid 可用嗎?有的話,那就很簡單了。


---
j...@heemseed.com

0 new messages