基于SELECT脚本创建DELETE脚本

问题描述 投票:1回答:1

PL / SQL的新手...

我有以下SELECT脚本,该脚本连接了两个不同的表以获取所需的输出。

我在子查询中也有一个WHERE子句,它查看两个单独的条件:

    SELECT p.provider_id, p.prov_name, ecp.*
  FROM ey30h_check_provider ecp
  JOIN provider p
    ON ecp.provider_id = p.provider_id
  JOIN ey30h_check ec
    ON ecp.ey30h_check_id = ec.ey30h_check_id
 WHERE (ecp.ey30h_check_id, ec.dern_number) IN
       (select ec.ey30h_check_id, ec.dern_number
          from ey30h_check ec
         WHERE ec.dern_number = '52365214587'
           AND ecp.provider_id = 50014);

此脚本的结果可以在下面看到:

Results from SELECT script

我将如何为此创建DELETE脚本?

我尝试使用以下脚本对其进行一些深入研究,但这显示为'ORA-00918:列定义不明确':

DELETE from ey30h_check_provider ecp
WHERE ecp.ey30h_check_id in 
(select ec.ey30h_check_id from ey30h_check ec
JOIN ey30h_check ec ON ecp.ey30h_check_id = ec.ey30h_check_id
JOIN provider p ON ecp.provider_id = p.provider_id
WHERE ec.dern_number = '52365214587'
AND ecp.provider_id = 50014);

PL / SQL的新手,所以请多多指教:)

sql plsql crystal-reports sql-delete
1个回答
0
投票

尝试使用此:

DELETE from ey30h_check_provider ecp
WHERE ecp.ey30h_check_id in
    (SELECT ecp.ey30h_check_id
    FROM ey30h_check_provider ecp
    JOIN provider p
    ON ecp.provider_id = p.provider_id
    JOIN ey30h_check ec
    ON ecp.ey30h_check_id = ec.ey30h_check_id
    JOIN provider p
    ON ecp.provider_id = p.provider_id
        WHERE (ecp.ey30h_check_id, ec.dern_number) IN
        (select ec.ey30h_check_id, ec.dern_number from ey30h_check ec
            WHERE ec.dern_number = '52365214587'
            AND ecp.provider_id = 50014));

'ORA-00918:列被歧义定义':发生在以下情况:联接中使用的列名存在于多个表中,因此被歧义引用。在联接中,在多个表中出现的任何列名都必须在引用时为其表名加上前缀。该列应引用为TABLE.COLUMN或TABLE_ALIAS.COLUMN。

如果选择查询提供正确的输出,则删除查询不会给您带来任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.