作者diamondking (迷惘)
看板Database
标题Re: [SQL ] 双层的WHERE IN?
时间Fri Apr 1 23:19:21 2011
对MySQL没有很熟,
不过有点好奇你写的那段SQL可以work吗??感觉语法怪怪的耶。
如果在你不想改造tb的状况下,硬要join出想要的结果,我想到的方法是:
SELECT tb.bIndex, ta.aIndex, ta.aValue
FROM ta
JOIN tb
ON (
tb.bValue LIKE Cast(ta.aIndex AS Char)+',%'
OR
tb.bValue LIKE '%,'+Cast(ta.aIndex AS Char)
OR
tb.bValue LIKE '%,'+Cast(ta.aIndex AS Char)+',%'
)
手边暂时没有MySQL可以试验,不确定有没有写错东西,
但是概念上就是用三种可能的字串样式(aIndex在字首、字尾、或字中)去Join。
※ 引述《SmallBeeWayn (喵喵叫的蜜蜂猫)》之铭言:
: 资料库: MySQL 5.1
: 范例表格:
: ta aIndex aValue
: 1 a1
: 2 a2
: 3 a3
: .... ....(以此类推)
: tb bIndex bValue
: 1 1,3,5
: 2 2,3
: 3 2,5,7,8
: 我想要得到这样的结果:
: bIndex aIndex aValue
: 1 1 a1
: 1 3 a3
: 1 5 a5
: 3 2 a2
: 3 5 a5
: 3 7 a7
: 3 8 a8
: 使用下列的语法:
: SELECT `bIndex`,`aIndex`,`aValue`
: JOIN `ta` ON (`ta`.`aIndex` IN (`tb`.`bValue`))
: WHERE `bIndex` IN (1,3)
: 结果却得到这样的结果:
: bIndex aIndex aValue
: 1 1 a1
: 3 2 a2
: 请问我该怎麽修正?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.166.141.226