【发布时间】:2021-10-28 05:44:21
【问题描述】:
我有 3 个表(仅显示带有示例值的相关列):
请求
id website_id
=============
1 NULL
2 NULL
3 NULL
request_fields
id requests_id field_id field_response
=============================================
1 1 1 some site
2 1 2 some user
3 2 1 some other site
4 2 2 some other user
5 3 1 some site
6 3 2 rando user
网站
id website_name
===============
1 some site
2 some other site
我的目标是将requests.website_id 更新为来自websites.id 的值,但该值是通过从request_fields 中选择来确定的,其中requests.id=request_fields.requests_id 和
request_fields.field_id=1 和 request_fields.response=websites.website_name
因此,IOW,对于requests 中的每一行,使用requests.id 从request_fields 中选择request_fields.field_resonse,其中request_fields.request_id=requests.id 和request_fields.field_id=1,然后从websites 中选择websites.id,其中websites.name=[the request_fields.field_resonse value] 和然后将原始 requests.id 值设置为 websites.id 值。
所以最终结果是
请求
id website_id
=============
1 1
2 2
3 1
这可能吗?我一直在努力解决它,我认为它涉及内部连接和其他东西,但这对我来说有点多。
编辑:
这是我目前的尝试,但我不确定我做对了吗?
update requests
inner join request_fields on requests.id=request_fields.request_id
inner join websites on request_fields.response=website.name
set requests.website_id=websites.id
我有点盯着桌子,它似乎已经奏效了,但又一次.. 我有点过头了,不确定我是否要在我的真实桌子上搞砸一些东西。
【问题讨论】:
标签: mysql join sql-update