作者azzc1031 (azzc1031)
看板Database
标题[SQL ] 用like连两张表的问题
时间Fri Jun 19 11:47:47 2020
我有两张表要连
表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://webptt.com/cn.aspx?n=bbs/Database/M.1592538469.A.488.html
1F:推 gamania54088: 改用substring去把表2的料号用空白切开只取左半部 06/19 14:09
2F:→ gamania54088: 再用相等的方式join起来试试 06/19 14:09
3F:→ ken218: %前面有空格怎麽还会捞到BananaG17? 06/19 21:59
4F:推 ken218: 抱歉眼残,表2.[料号] like 表1.[料号] + ' %' 应该可以 06/19 22:04
5F:→ ken218: % 前面加个空格 06/19 22:05
6F:→ azzc1031: 感谢两位,都是不错的方法,我再试试! 06/19 23:15
7F:→ MOONY135: 是说为什麽不直接left join就好 看起来一对一阿 06/20 21:33
8F:→ MOONY135: Banana% and BananaG17%这样不行吗 06/20 21:34
9F:→ azzc1031: 忘记说表2有70多万笔资料,这两笔是举例而已 06/21 12:18
10F:→ tedcat: 推文方法2应该不可行,banana%会涵盖g17 07/12 12:39
11F:推 rockchangnew: 这资料表设计就有问题,料号为何用文字来like,这样 07/12 23:19
12F:→ rockchangnew: 效能根本悲剧 07/12 23:19
13F:推 mathrew: 同楼上,一开始设计就有问题了 07/13 08:11
14F:推 mered: 同上,应先处理料号的命名跟分类方式,这样就不用使用like 07/22 10:45
15F:→ mered: ,可直接使用‘=’,或者先做group出你要的资料,再用新栏 07/22 10:46
16F:→ mered: 位做重新命名 07/22 10:46
17F:推 hmsDEBBIE: 先用substr及group by处理表2的料号栏位,再来join 07/29 23:25