这个问题很简单,但是我通过搜索“UPDATE JOIN INSERT”和其他类似的东西没有找到答案。
我需要对两个表('main' 和 'sub')进行更新,而一个数据集可能不存在。那么应该有一个简单的 INSERT 之前执行...在一个语句中。
“主要”始终存在。
“子”没有。
我梦幻般的 SQL 解决方案是这样的:
UPDATE main LEFT JOIN sub on main.primary=sub.primary
SET main.foo='bar', sub.foo2='bar2'
CASE sub.primary IS NULL {INSERT INTO sub SET sub.primary=main.primary};
Run Code Online (Sandbox Code Playgroud)
'CASE'-part 是自由泳的,大概是行不通的。但正确的做法是什么?
它绝对必须是“UPDATE [...] LEFT JOIN [...] SET a=aVal, b=bVal, [...]” - 语句。
它必须可扩展至最多 5 个 LEFT JOIN 表,并且无需“SET(..) VALUES(..)”
有没有可能的解决方案?