mysql – 用于从视图更新表中选定字段的SQL
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 用于从视图更新表中选定字段的SQL,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2671字,纯文字阅读大概需要4分钟。
内容图文
![mysql – 用于从视图更新表中选定字段的SQL](/upload/InfoBanner/zyjiaocheng/905/c3a8d26bfe4a48609b205241bfbaf3e7.jpg)
我是新手,所以我为任何困惑/挫折道歉.我感谢任何帮助!
我有一个表(MainTable),我用(GoodTable和BadTable)创建了两个视图.
>每个表有4列(ID,UserID,键,值).
> ID是主键,但是
> UserID可以在多行中重复.
我在Main表中需要做的是找到BAD表中的ID,并根据UserID和LIKE匹配键列的匹配,将GOOD表的value列中的值更新到主表.
我希望这是有道理的.
我试过了:
UPDATE MainTable
SET value = (SELECT value FROM GoodTable
WHERE MainTable.UserID = GoodTable.UserID
AND MainTable.key LIKE "some%key%specifics");
这让我几乎在那里,但问题是如果它没有找到LIKE键细节,它返回一个NULL值,我希望它保持原始值,如果它不在BadTable中(BadTable基本上是所有匹配的键) LIKE密钥细节).显然上面没有使用BadTable,但我认为这可能有助于我解决这个问题(不是这样,到目前为止!)……
这是一个例子:
MainTable:
ID UserID key value
1 1 key1 good value
2 1 key2 bad value
3 1 key3 unrelated value
4 2 key1 good value
5 2 key2 bad value
6 2 key3 unrelated value
GoodTable:
ID UserID key value
1 1 key1 good value
4 2 key1 good value
BadTable:
ID UserID key value
2 1 key2 bad value
5 2 key2 bad value
What I want MainTable to change to:
ID UserID key value
1 1 key1 good value
2 1 key2 good value
3 1 key3 unrelated value
4 2 key1 good value
5 2 key2 good value
6 2 key3 unrelated value
我还想过如果有类似VLOOKUP的东西(比如在Excel中)我可以说如果做错了该怎么做,但我也无法解决这个问题.我从研究其他问题尝试了一些其他的事情,但我现在自己晕了,决定伸出援手:)
最后,我不确定这是否重要,但这对于MySQL来说……
我相信我让自己变得比我需要的更复杂,所以我非常感谢任何人都可以提供帮助!
更新:根据@Rabbit的建议,这是我使用内部连接可以想到的最好的(尽管我认为这会添加到MainTable中,但我想保持MainTable中的行数相同,只需更新一个字段对于适用的行..):
UPDATE MainTable
JOIN GoodTable ON MainTable.ID = GoodTable.ID
SET value = (SELECT value FROM GoodTable
WHERE MainTable.UserID = GoodTable.UserID
AND MainTable.key LIKE "some%key%specifics");
我确信这是一次可怕的尝试,但我肯定是新手!
我确实设法提出了一个解决方案(虽然我确信这是非常低效的) – 请参阅下面的答案! (感谢@DBug和@Rabbit指出我正确的方向!)
解决方法:
您已经说过“主表找到BAD表中的ID,并根据UserID与LIKE匹配键列的匹配,将GOOD表的值列中的值更新到MAIN表中“.所以你的样本结果是错误的……
我们将从MainTable更新2和5 ID吗?因为它在BadTable中,但是2键和5键是键2,而GoodTable上没有键2.
如果我将根据你的答案.这可能对你有帮助.请检查
UPDATE MainTable m
INNER JOIN BadTable b ON m.id = b.id
LEFT JOIN GoodTable g ON b.UserID = g.UserID
SET m.value = g.value
一点点修复.为你想要的钥匙
内容总结
以上是互联网集市为您收集整理的mysql – 用于从视图更新表中选定字段的SQL全部内容,希望文章能够帮你解决mysql – 用于从视图更新表中选定字段的SQL所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。