對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