看板 Database 關於我們 聯絡資訊
我有兩張表要連 表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
gamania54088: 改用substring去把表2的料號用空白切開只取左半部 06/19 14:09
gamania54088: 再用相等的方式join起來試試 06/19 14:09
ken218: %前面有空格怎麼還會撈到BananaG17? 06/19 21:59
ken218: 抱歉眼殘,表2.[料號] like 表1.[料號] + ' %' 應該可以 06/19 22:04
ken218: % 前面加個空格 06/19 22:05
azzc1031: 感謝兩位,都是不錯的方法,我再試試! 06/19 23:15
MOONY135: 是說為什麼不直接left join就好 看起來一對一阿 06/20 21:33
MOONY135: Banana% and BananaG17%這樣不行嗎 06/20 21:34
azzc1031: 忘記說表2有70多萬筆資料,這兩筆是舉例而已 06/21 12:18
tedcat: 推文方法2應該不可行,banana%會涵蓋g17 07/12 12:39
rockchangnew: 這資料表設計就有問題,料號為何用文字來like,這樣 07/12 23:19
rockchangnew: 效能根本悲劇 07/12 23:19
mathrew: 同樓上,一開始設計就有問題了 07/13 08:11
mered: 同上,應先處理料號的命名跟分類方式,這樣就不用使用like 07/22 10:45
mered: ,可直接使用‘=’,或者先做group出你要的資料,再用新欄 07/22 10:46
mered: 位做重新命名 07/22 10:46
hmsDEBBIE: 先用substr及group by處理表2的料號欄位,再來join 07/29 23:25