線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1497
推到 Plurk!
推到 Facebook!

[SQL]如何擷取兩個Table不相同的值

尚未結案
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-30 19:24:02 IP:61.218.xxx.xxx 未訂閱
各位高手大家好: 我有個問題想請教大家,關於SQL的語法 比如說, 我有兩個Table:A、B 兩個Table的欄位先假設只有OK好了…^^" A的OK有:1、2、3、4、5 B的OK有:1、2、3 那我該如何篩選出4、5呢? 我本來是用不等於的方式… 但,結果卻跑出所有的資料, 這表示它是等列對等列的方式在做比較… 嗚…請教一下各位高手~ 麻煩高手來解答一下~^^
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-30 21:10:05 IP:203.204.xxx.xxx 未訂閱
是mysql嗎? 如果不是的話,可以利用 sub-query 的方式,比如說: select * from a,b where not on (select * from a,b where a.ok=b.ok) 這樣就可以了,不過上面的缺點是,一定要a.ok > b.ok。 可能還有更好的方法,只是擔心您的DBMS是否支援語法。 有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-31 09:03:05 IP:211.74.xxx.xxx 未訂閱
資料庫:MSSQL.. SELECT DISTINCT OK FROM A WHERE NOT EXISTS (SELECT * FROM B WHERE A.OK = B.OK) TRY TRY SEE
引言: 各位高手大家好: 我有個問題想請教大家,關於SQL的語法 比如說, 我有兩個Table:A、B 兩個Table的欄位先假設只有OK好了…^^" A的OK有:1、2、3、4、5 B的OK有:1、2、3 那我該如何篩選出4、5呢? 我本來是用不等於的方式… 但,結果卻跑出所有的資料, 這表示它是等列對等列的方式在做比較… 嗚…請教一下各位高手~ 麻煩高手來解答一下~^^
shpeng
初階會員


發表:6
回覆:67
積分:49
註冊:2002-12-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-31 09:20:28 IP:211.72.xxx.xxx 未訂閱
SELECT A.* FROM A
INNER JOIN B ON A.OK =B.OK
==取之於斯,用之於斯==
------
==取之於斯,用之於斯==
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-31 16:38:06 IP:61.219.xxx.xxx 未訂閱
引言:
SELECT A.* FROM A
INNER JOIN B ON A.OK =B.OK
==取之於斯,用之於斯==
漂亮 /* 使用中文很辛苦,中華男兒當自強 */
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-01-02 09:00:37 IP:211.74.xxx.xxx 未訂閱
這樣Select 出來好像是1,2,3...而不是4,5喔?? <>< face="Verdana, Arial, Helvetica">引言:
SELECT A.* FROM A
INNER JOIN B ON A.OK =B.OK
==取之於斯,用之於斯==
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-01-02 12:07:36 IP:61.219.xxx.xxx 未訂閱
引言: 這樣Select 出來好像是1,2,3...而不是4,5喔?? <>< face="Verdana, Arial, Helvetica">引言:
SELECT A.* FROM A
INNER JOIN B ON A.OK =B.OK
==取之於斯,用之於斯==
歹勢 , 沒注意看 '不' 字. SELECT A.* FROM A where (select count(*) from B where OK=A.OK)=0 Sub-query 一定要嗎 ? 大家想想, 有沒有可能用 join ? /* 使用中文很辛苦,中華男兒當自強 */
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-01-03 13:54:19 IP:211.74.xxx.xxx 未訂閱
感謝~^^ 我是用DOAD ORACL的SQL語法… 謝謝大家的提供,我馬上試試看喔~
shyu_ting
一般會員


發表:13
回覆:25
積分:12
註冊:2002-11-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-01-06 17:23:34 IP:203.70.xxx.xxx 未訂閱
select A.* from A full join B on (A.OK=B.OK) where B.OK is null 試試看囉
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-01-07 17:26:12 IP:210.58.xxx.xxx 未訂閱
用 JOIN 的方式: select a.ok from a left join b on a.ok = b.ok where b.ok is null 這個結果是 a 集合 - b 集合 若是要 (a集合 U(聯集) b集合) - (a集合 ^(交集, sorry 沒有反U) b集合 的話, 就不得不用 subquery 了.
uuujjj
一般會員


發表:31
回覆:59
積分:18
註冊:2002-09-28

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-01-08 12:48:13 IP:61.218.xxx.xxx 未訂閱
很謝謝各位高手的回應, 另外我發現一個寫法,就是 select * from A minus select * from B; 便能取出A多出來的資料了…^____^ 非常感謝大家的幫忙… 學到了好多語法~
系統時間:2024-11-23 6:08:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!