我正在尝试使用表达式来连接两个表(前两个)以获得类似第三个表的内容。
我想选择'Sitepage'和'Medium'并将前两个表加入到'Sitepage'和'Campaign ID'之间匹配的RIGHT 5个字符的行上。此外,如果匹配,则“程序”将替换“中等”。什么是语法?
Sitepage | Medium
xyz.com/campaign=12345 | A
xyz.com/campaign=23456 | C
Campaign ID | Program
12345 | B
Sitepage | Medium
xyz.com/campaign=12345 | B
xyz.com/campaign=23456 | C
答案 0 :(得分:2)
我根据@ Juan的答案,但我必须做一些调整才能让它发挥作用。
SELECT
SitePage, COALESCE(t2.Program, t1.Medium) as Medium
FROM Table1 t1
LEFT JOIN Table2 t2
ON RIGHT(t1.Sitepage, 5) = COALESCE(t2.`Campaign ID`, -1);
@Abhik也朝着正确的方向前进。它比上面的更通用,它假设SitePage
的最后5个字符将是唯一相关的字符。话虽如此,我会选择......
SELECT
SitePage, COALESCE(t2.Program, t1.Medium) as Medium
FROM Table1 t1
LEFT JOIN Table2 t2
ON SUBSTRING_INDEX(t1.Sitepage,'=',-1)
= COALESCE(t2.`Campaign ID`, -1);
答案 1 :(得分:1)
您可以使用substring_index
然后通过加入
update table1 t1
join table2 t2 on t2.`Campaign ID` = substring_index(t1.`Sitepage`,'=',-1)
set t1.`Medium` = t2.`Program`
答案 2 :(得分:1)
$
这应该可以解决问题。左边加入你想要的表达,当有匹配时,程序不会为空,所以你可以拿起它,否则选择中等。如果你的table2在Program上允许null,你可能需要调整它。