mysql sql 视图相应的字段_mysql – 用于从视图更新表中选定字段的SQL

我是新手,所以我为任何困惑/挫折道歉.我感谢任何帮助!

我有一个表(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指出我正确的方向!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值