SQL错误360:无法修改子查询中使用的表或视图

问题描述

| 我得到了错误   无法修改查询中使用的表或视图 在执行此查询时。 在此,“ 1”中的“ 0”引用了“ 3”中的“ 0”。 请提出如何更新\'flag \'的建议。
update my_table
set flag = \'X\'
where raw_str = (
                select raw_str from my_table_view
                where a_num in 
                    (
                        select num_id from num_table
                        where state not in (0,1,7,99,10,11,20,21)
                        )
                )
提前致谢。     

解决方法

正确答案取决于dbms,使用MS-SQL 2000 2005 2008和sybase可能会使用功能强大的 带有特殊子句WITH(NOLOCK)的UPDATE FROM,以强制重用派生表\“ my_table_view \”。 对于其他dbms(ORACLE Informix),必须将子查询加载到临时数据库 您的平台是哪个? 再见 地亚哥 SQL Server 2005 2008更新从:
UPDATE B1
SET
    B1.PARAMETER_DS = \'UPDATED\'
FROM
  B_PARAMETERS B1 WITH(ROWLOCK)
INNER JOIN
  (SELECT B2.* FROM 
 B_PARAMETERS B2 WITH(NOLOCK)
WHERE FAMILY_ID = 5 ) B2
ON
    B1.PARAMETER_PK = B2.PARAMETER_PK
WHERE
    B2.PARAMETER_VL = \'X\';
对于Oracle:创建全局临时表如何在Oracle中创建临时表 对于Informix创建临时表:插入临时值(选择...。按ID排序)