只是想知道如何更改以下SQL,以便只对唯一的link_row实例进行插入。因此,如果在seletc中拉回完全相同的值,我只想进行循环并第一次插入。
BEGIN
FOR LINK_ROW IN ( SELECT LINKTEXT, LINKURL, CORPID FROM LINKS )
LOOP
//Do insert here
当我运行脚本时,我在主键违规时会出现错误,因为同一项目在循环内被插入两次。
提前致谢
答案 0 :(得分:5)
您可以使用UNIQUE
或DISTINCT
关键字来限制您的选择结果。
但是在一个语句中进行插入和选择会好得多。
INSERT INTO <table>
VALUES (linktext, linkurl, corpid)
SELECT UNIQUE linktext, linkurl, corpid
FROM links;
答案 1 :(得分:4)
您可以使用DISTINCT
关键字从LINKS表中仅选择唯一记录:
BEGIN
FOR LINK_ROW IN ( SELECT DISTINCT LINKTEXT, LINKURL, CORPID FROM LINKS )
LOOP
但是,虽然我不知道查询的完整程度,但通常比在SQL中使用循环更好地完成任务。 SQL是声明性的,设计用于集合,因此您希望告诉数据库引擎您想要做什么,而不是这样做。