【发布时间】:2015-04-23 15:58:46
【问题描述】:
我有一个带有 id 和标签的表 T
ID LABEL
1 label_1
2 label_2
3 label_3
我有一个标签列表:
('label_1', 'label_4', 'label_6' )
我想选择表 T 中不存在的那些。在我的情况下,我会得到“label_4”和“label_6”。 如何在 SQL 中做到这一点?
编辑 1
这些标签是外部值。我想在日志文件中打印我的表中不存在的值,可能使用假脱机
编辑 2
我目前正在尝试使用 pl/SQL 将我的所有值放入一个表中,因为它基本上是一个巨大的值列表。我有这个:
DECLARE
type array_t is varray(603) of varchar2(50 BYTE);
labels array_t := array_t(
'210',
'label_1',
'label_6',
'label_4'
);
BEGIN
For i in labels LOOP
Insert Into TEMP_LABEL (LABEL)
Values (i);
END LOOP;
commit;
END;
但我收到以下错误:pls-00456 item is not a cursor
我被困在这里了。
【问题讨论】:
-
label_4和label_6是否存在于某个查找表中?或者它们是可能根本不在数据库中的外部值?您究竟希望您的结果是什么样的? -
那些标签是外部值。我想在日志文件中打印我的表中不存在的值,可能使用
spool -
答案取决于您没有指定的数据库引擎。
-
你能用这些外部值创建一个临时表或表变量吗?你用的是什么数据库系统?创建临时表后,您应该能够执行
LEFT JOIN然后过滤NULL值以获得所需的内容。 -
这是否意味着如果不将我的外部值存储在(临时)表中,我要求做的事情是不可能的?