[SQL ] 用like連兩張表的問題

看板Database (資料庫)作者 (azzc1031)時間4年前 (2020/06/19 11:47), 編輯推噓6(6011)
留言17則, 9人參與, 4年前最新討論串1/1
我有兩張表要連 表1 : [料號]/ [價格] ex. Banana / $50 ex. BananaG17 /$65 表2 : [料號]/[廠商]/[日期] ex. Banana 2.0 / A廠商 /20200513 ex. BananaG17 1.0 / B廠商 / 20200603 其中表2的[料號]在字尾還呈現了1.0/2.0等等字串 但那可以忽略 我的SQL server語法是這樣的: 表1 right join 表2 on 表2.[料號] like 表1.[料號] +’%’ 但問題來了 BananaG17 1.0這系列的料號會有兩種價格 因為它會同時找到 Banana的$50和BananaG17的$65! 請問這種情況該怎麼辦? 請救救快崩潰的數據分析師QQ 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.204.34.3 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1592538469.A.488.html

06/19 14:09, 4年前 , 1F
改用substring去把表2的料號用空白切開只取左半部
06/19 14:09, 1F

06/19 14:09, 4年前 , 2F
再用相等的方式join起來試試
06/19 14:09, 2F

06/19 21:59, 4年前 , 3F
%前面有空格怎麼還會撈到BananaG17?
06/19 21:59, 3F

06/19 22:04, 4年前 , 4F
抱歉眼殘,表2.[料號] like 表1.[料號] + ' %' 應該可以
06/19 22:04, 4F

06/19 22:05, 4年前 , 5F
% 前面加個空格
06/19 22:05, 5F

06/19 23:15, 4年前 , 6F
感謝兩位,都是不錯的方法,我再試試!
06/19 23:15, 6F

06/20 21:33, 4年前 , 7F
是說為什麼不直接left join就好 看起來一對一阿
06/20 21:33, 7F

06/20 21:34, 4年前 , 8F
Banana% and BananaG17%這樣不行嗎
06/20 21:34, 8F

06/21 12:18, 4年前 , 9F
忘記說表2有70多萬筆資料,這兩筆是舉例而已
06/21 12:18, 9F

07/12 12:39, 4年前 , 10F
推文方法2應該不可行,banana%會涵蓋g17
07/12 12:39, 10F

07/12 23:19, 4年前 , 11F
這資料表設計就有問題,料號為何用文字來like,這樣
07/12 23:19, 11F

07/12 23:19, 4年前 , 12F
效能根本悲劇
07/12 23:19, 12F

07/13 08:11, 4年前 , 13F
同樓上,一開始設計就有問題了
07/13 08:11, 13F

07/22 10:45, 4年前 , 14F
同上,應先處理料號的命名跟分類方式,這樣就不用使用like
07/22 10:45, 14F

07/22 10:46, 4年前 , 15F
,可直接使用‘=’,或者先做group出你要的資料,再用新欄
07/22 10:46, 15F

07/22 10:46, 4年前 , 16F
位做重新命名
07/22 10:46, 16F

07/29 23:25, 4年前 , 17F
先用substr及group by處理表2的料號欄位,再來join
07/29 23:25, 17F
文章代碼(AID): #1Ux3LbI8 (Database)
文章代碼(AID): #1Ux3LbI8 (Database)