sql 在cust_entp_crdt 中找出crdt_tp,crdt_no,crdt_iss_ctry这三个字段一样的数据,不需要我输入
时间: 2024-05-05 14:19:55 浏览: 84
可以使用以下 SQL 语句找出 `cust_entp_crdt` 表中 `crdt_tp`、`crdt_no`、`crdt_iss_ctry` 这三个字段相同的数据:
```sql
SELECT *
FROM cust_entp_crdt c1
WHERE EXISTS (
SELECT 1
FROM cust_entp_crdt c2
WHERE c1.crdt_tp = c2.crdt_tp
AND c1.crdt_no = c2.crdt_no
AND c1.crdt_iss_ctry = c2.crdt_iss_ctry
AND c1.id <> c2.id
)
```
这个查询会找到 `cust_entp_crdt` 中所有 `crdt_tp`、`crdt_no`、`crdt_iss_ctry` 相同的记录。其中 `id` 字段是假设该表中的主键,需要根据实际情况进行修改。
相关问题
条件:1、mysql数据库删除表“t_cust_shareholder”重复数据 2、表“t_cust_shareholder”中重复数据中的每个字段的值都一致 3、需要保留表“t_cust_shareholder”重复数据中的一条数据
要删除表"t_cust_shareholder"中重复数据,且重复数据中每个字段的值都一致,并保留其中一条数据,可以使用以下方法在MySQL中实现:
```sql
DELETE FROM t_cust_shareholder
WHERE id NOT IN (
SELECT MIN(id)
FROM t_cust_shareholder
GROUP BY column1, column2, column3, ...
);
```
在上述代码中,需要将"t_cust_shareholder"替换为实际的表名,并根据实际情况将"column1"、"column2"、"column3"等替换为用于判断重复的字段名。
这个删除语句使用了子查询。子查询找到每个字段组合的最小id,然后在主查询中删除除了这些最小id之外的记录,从而保留其中一条数据。
请注意,在执行此操作之前,请务必备份您的数据库以防止意外数据丢失。
用pl/sql程序块写代码,用于测试存储过程,步骤如下: select cust_no from T1 SAMPLE(1) where rownum<10; 把查询出的随机抽样的cust_no编成变量v_cust_no 利用cursor循环遍历 call sp1(v_cust_no)、call sp2(v_cust_no) 将两个存储过程sp1、sp2的出参进行比较,查询出不一样的数据
以下是可能的PL/SQL程序块:
declare
v_cust_no T1.cust_no%type; -- 从T1表获取cust_no的数据类型
c_sp1_out out_parameter_type1; -- sp1的输出参数类型1
c_sp2_out out_parameter_type2; -- sp2的输出参数类型2
cursor c1 is select cust_no from T1 SAMPLE(1) where rownum<10;
begin
open c1;
fetch c1 into v_cust_no;
while c1%found loop
-- 调用sp1存储过程
sp1(v_cust_no, c_sp1_out);
-- 调用sp2存储过程
sp2(v_cust_no, c_sp2_out);
-- 如果sp1和sp2的输出不相同,打印出不同的数据
if c_sp1_out != c_sp2_out then
dbms_output.put_line('cust_no='||v_cust_no);
end if;
fetch c1 into v_cust_no;
end loop;
close c1;
end;
/
注意,此示例代码假定:
- 从T1表中选择的随机抽样数据的cust_no字段不为空。
- 存储过程sp1和sp2都有输入参数v_cust_no(具有T1.cust_no的数据类型)和输出参数(在此示例中分别为c_sp1_out和c_sp2_out)。
- 存储过程sp1和sp2只是在它们的输出上进行比较。这假定输出是可比较的类型。如果不是,请调整比较类型。
- 代码将结果打印到标准输出(使用dbms_output.put_line)。如果您想将结果存储在表中或其他方式,请适当修改代码。
阅读全文