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

不求甚解的兩簡單語法,望各位大大解答小弟心中之迷惑。

答題得分者是:yubad2000
misjason
一般會員


發表:9
回覆:17
積分:5
註冊:2007-03-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-12-06 18:26:15 IP:211.22.xxx.xxx 訂閱
語法1:

SELECT * FROM AA
WHERE
A01 IN (SELECT A01 FROM BB)
AND
A02 IN (SELECT A02 FROM BB)

照"字面"上的意思,這就是小弟要的,不外乎想把 AA 與 BB 的 A01和A02 有出現相同值的資料撈出,結果是我想要的沒錯。

語法2, 輸出的結果跟語法1 相同,也是我所要的! (兩句皆在local DB自行創建資料測試過)

SELECT A.* FROM AA A,BB B
WHERE
A.A01 = B.A01
AND
A.A02 = B.A02

那請問各位大大,這兩個語句 所撈出的結果真的是一模一樣的嗎?? 小弟對語句2 感覺怪怪的 深怕丟到公司DB去執行會撈錯資料
另請教各位大大 光這個需求 有所謂 "最正確" 的使用語法嗎??

願聞其詳! 先謝謝各位!
------
請多多指教,謝謝!
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-12-06 18:45:32 IP:220.130.xxx.xxx 訂閱
MS SQL有SQL Profiler,直接去取這兩次的執行結果就知道 是不是了,
再不然用Query Analyzer跑執行計劃看看兩個計劃是不是一樣也行。
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
yubad2000
中階會員


發表:0
回覆:44
積分:78
註冊:2007-09-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-12-06 19:03:20 IP:66.171.xxx.xxx 未訂閱
兩個語法是不同的
語法1: 只要A01存在於BB, A02存在於BB, this row will be selected
i.e.
AA BB
A A01 A02 A01 A02
-- ------ ------ ----- -----
1 4 5 4 0
0 5

語法2: A01與A02同時存在於BB的same row, this row will be selected
i.e.
AA BB
A A01 A02 A01 A02
-- ------ ------ ----- -----
1 4 5 4 5

I don't know which one you really want..

===================引 用 misjason 文 章===================
語法1:

SELECT * FROM AA
WHERE
A01 IN (SELECT A01 FROM BB)
AND
A02 IN (SELECT A02 FROM BB)

照"字面"上的意思,這就是小弟要的,不外乎想把 AA 與 BB 的 A01和A02 有出現相同值的資料撈出,結果是我想要的沒錯。

語法2, 輸出的結果跟語法1 相同,也是我所要的! (兩句皆在local DB自行創建資料測試過)

SELECT A.* FROM AA A,BB B
WHERE
A.A01 = B.A01
AND
A.A02 = B.A02

那請問各位大大,這兩個語句 所撈出的結果真的是一模一樣的嗎?? 小弟對語句2 感覺怪怪的 深怕丟到公司DB去執行會撈錯資料
另請教各位大大 光這個需求 有所謂 "最正確" 的使用語法嗎??

願聞其詳! 先謝謝各位!
------
===波士頓夜未眠===
What a wonderful world!!
Jazz up the world with jazz!!
==================

When I am not programming...
you can find me here:
http://www.holy-war.de/EN/World3/bin/?advertiser=63190
misjason
一般會員


發表:9
回覆:17
積分:5
註冊:2007-03-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-12-06 21:05:18 IP:123.252.xxx.xxx 訂閱

天啊~ 真是多虧了波士頓大大... 一語驚醒夢中人!
小弟要的是第二種,還好還好~ 差點鑄下大錯!

自己真是太笨拙了,居然沒看清兩者差別! 感謝波士頓大

Thanks all!
------
請多多指教,謝謝!
diashad
一般會員


發表:20
回覆:10
積分:6
註冊:2006-08-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-12-06 22:23:59 IP:202.173.xxx.xxx 訂閱
哪兩個結果是一樣的,不過,效率不同,前一個會作整個表的二次掃描比較,第二個效率就比較好.
------
x
misjason
一般會員


發表:9
回覆:17
積分:5
註冊:2007-03-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-12-07 16:01:35 IP:211.22.xxx.xxx 訂閱

謝謝樓上各位大大解答! 小弟感謝萬分!

------
請多多指教,謝謝!
系統時間:2024-12-04 1:40:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!