create table it0418 (
pno char(1) not null
, price int not null
);
insert into it0418 values
('A', 220), ('B', 160), ('C', 155),
('D', 245), ('E', 120), ('F', 215),
('G', 100);
select a.*
, b.*
from it0418 a
join it0418 b
on a.pno < b.pno
order by 1,3;
select a.*
, b.*
, a.price + b.price
from it0418 a
join it0418 b
on a.pno < b.pno
order by 1,3;
首先謝謝您的答覆,我有3個問題想請教您
1.為何要自己join自己?
2.為何設這個條件a.pno < b.pno?
3.您把pno設定字元型態,a.pno < b.pno-->字元可以比較大小嗎?
先回答 3, 字元可以比較大小的,一般是用內碼來比.
然後 1, 解這個問題,很直觀的就是需要 兩組, 那當然是原本的
table 就是兩個集合,來做 join.
再來 2, join 並不全是 = , 只要是 運算式 為 true, 該組合就會留下來.你這問題是 不相同的, 也可以寫成不等於 (!= 或是 <>)
但是這樣子組數會變多, 例如 (A,B) (B,A) 這樣排列不同,但是組合相同.所以就用 3 的特性, 使用 < 或是 > 方式 取得較少組數.
精簡一些.
另外,以後別在發文區發問. 這樣子比較容易被漏掉.
謝謝您的答覆,我第一次使用it邦幫忙,請問那要在哪發問比較不會漏掉?
您好,我最近在練SQL考題,今天練到一題考古題,結果我還是想不出來,不知道您可以告訴我這題該怎麼解嗎?
https://ithelp.ithome.com.tw/questions/10203083