我的SQL(没有双关语)相当生疏。我需要根据表B&中数据的组合,在表A 中更新用户的group_id
。 ç即可。有人可以给我一些关于我应该怎么做的指示。
以下是SELECT
语句的外观:
SELECT group_id
FROM exp_channel_data d, exp_channel_titles t, exp_members m
WHERE d.field_id_19 LIKE '%[362]%'
AND t.entry_id = d.entry_id
AND t.author_id = m.member_id
答案 0 :(得分:1)
目前,我对MSSQL更熟悉,但我相信这也适用于MySQL。您还没有表明要更新group_id
的内容,因此我只是在其中插入了一个随机字符串。如果要将其设置为查询中另一个表的值,您也可以通过执行m.group_id = d.group_id
之类的操作来执行此操作:
UPDATE m SET
m.group_id = 'newValue'
FROM
exp_members m
INNER JOIN exp_channel_titles t
ON m.member_id = t.author_id
INNER JOIN exp_channel-data d
ON t.entry_id = d.entry_id
AND d.field_id_19 LIKE '%[362]%'
如您所见,我已将您的隐式联接更改为显式联接(例如INNER JOIN
)。我真的推荐这种语法,因为通过将WHERE条件与JOIN条件分开,可以更容易地看到发生了什么。
看起来MySQL并不支持上面使用的UPDATE...FROM
语法。试试这个:
UPDATE
exp_members m,
exp_channel_titles t,
exp_channel_data d
SET
m.group_id = 'newValue'
WHERE
m.member_id = t.author_id
AND t.entry_id = d.entry_id
AND d.field_id_19 LIKE '%[362]%'
同样,这还没有经过测试,但我认为它会起作用。如果没有,它至少可以帮助您更接近您的答案。
答案 1 :(得分:-1)
也许SELECT的UPDATE解决了你的问题...
UPDATE TABLE
SET group_id = (SELECT group_id FROM ...)
WHERE group_id = <your_criteria>