我在SQL Developer中有两个不同的表,TB_Temp
和TB_Main
。我想比较这些表中的两列,例如。我想比较user_id
中的tb_temp
列和user_payment
中的tb_main
列。
这两个表都是从Excel文件导入的。如果匹配,我想要它,例如,使用dbms_output
日志记录输出一个调试。
到目前为止,我有;它是我与IF
陈述斗争的比较部分!这两个表包含将不断上传新信息的值,因此我得到的是我实际上无法声明存储在表中的值,因为如果这有意义,它们将一直在变化?我只需要知道列是否匹配,然后需要输出!
create PROCEDURE PR_TEST AS
user_payment number;
CURSOR c is
SELECT user_payment
FROM tb_main;
CURSOR tmp is
SELECT *
FROM tb_temp
WHERE user_ref is null or user_ref = user_payment
cTemp%ROWTYPE
BEGIN
--loop through cursor---
cTemp_COUNT:=0;
FOR I IN cTemp LOOP
end loop
答案 0 :(得分:0)
基于SET的解决方案应该适合您。
SELECT t.*
FROM tb_temp t INNER JOIN tb_main m on
WHERE t.user_ref = m.user_payment
UNION
SELECT * FROM tb_temp WHERE user_ref IS NULL
答案 1 :(得分:0)
你知道你的输出有什么连接和ref_Cursors吗? 另请注意:播放导入的数据时,可能会显示空格等非显示字符。因此,如果user_Payment是' 123'并且用户ID是' 123'找不到匹配。
显示user_payment与user_ID匹配的两个表中的所有详细信息
SELECT *
FROM tb_Main M
INNER JOIN tb_temp T
on M.user_payment = T.User_ID
显示两个表中的所有记录,并且当存在匹配时,如果发生多个匹配,则显示与彼此对齐的记录(在同一行上),将生成多行。
SELECT *
FROM tb_Main M
FULL OUTER JOIN tb_temp T
on M.user_payment = T.User_ID
显示来自tb_main的所有记录,仅显示与tb_temp匹配的详细信息
SELECT *
FROM tb_Main M
LEFT JOIN tb_temp T
on M.user_payment = T.User_ID
显示来自tb_temp的所有记录,仅显示与tb_main匹配的详细信息
SELECT *
FROM tb_Main M
RIGHT JOIN tb_temp T
on M.user_payment = T.User_ID