我写了以下更新
update menus_pages
set parent_page_id = (select pages.page_id from tb_pages pages where pages.name = 'ADM')
where page_id = (select pages.page_id from tb_pages pages where pages.name = 'CAL')
并且效果很好但是......在SQLSERVER上有更有效的方法来更新该表吗?
由于
答案 0 :(得分:1)
你可以用连接来做到这一点。但是这只有在tb_pages中有一个记录名为name ='ADM'并且确切的一个记录名为='CAL'时才有效...(但您问题中的查询也仅适用于这些条件)
UPDATE mp
SET mp.parent_page_id = ADM.page_id
FROM menu_pages mp
INNER JOIN tb_pages CAL
ON mp.page_id = CAL.page_id
AND CAL.name = 'CAL'
INNER JOIN tb_pages ADM
ON ADM.name = 'ADM'
答案 1 :(得分:0)
是page_id,pages.name是主键吗?
如果可以的话,如果没有尝试在where子句中使用主键。
如果您不能在where子句中使用主键,请为page_id和pages.name添加索引。