我怎样才能插入一行?

how I can insert just one row?

如何让这段代码只插入第一人称,而不是全部,如何满足指定条件?? 还有一个问题:我可以让这段代码更优化吗?以及如何?

INSERT INTO TLP
            (LASTNAME, FIRSTNAME,  EMAIL1, USERID  ) 
SELECT NAME,  GIVEN_NAME, MAIL, LOGIN, SYSDATE

FROM   GLOB 
WHERE (( ( NOT EXISTS (SELECT EMAIL1 
                     FROM   TLP
                     WHERE  GLOB.mail = TLP.email1 ) 
         AND GLOB.mail IS NOT NULL )
         AND GLOB.COUNTRY='France' )
        OR (( NOT EXISTS (SELECT userid
                         FROM   TLP 
                         WHERE  GLOB.LOGIN = TLP.userid ) 

  AND GLOB.COUNTRY='Germany'))
  and ( exists (select FIRSTNAME
                  from TLP
                  where (gLOB.name not like '07_%' AND 
                 glob.name not like 'TR_%' AND
                 glob.name not like 'ST_%' AND                     
                    glob.name is not null))

                 ));

您可以在最后添加一个条件。

and rownum=1;

这样就可以了。

优化需要考虑很多因素。这 link 可能会有所帮助。

你可以在where条件下rownum = 1。

部分示例如下: 在第一个示例中,我们可以按数据排序并使用 rownum <= 1 仅获取一条记录。它只会给出一条记录。

SELECT * 
FROM 
    (SELECT *
     FROM audit_table ORDER BY activity_id DESC)
WHERE  rownum <= 1;

其他简单示例:

 SELECT *
    FROM audit_table
    WHERE ROWNUM <= 1;

SELECT * FROM 
 (
  SELECT deptno, ename
       , ROW_NUMBER() OVER (ORDER BY deptno) rno
  FROM emp
 ORDER BY deptno
 )
WHERE rno <= 1

在上面的示例中,我们使用 ROW_NUMBER() 对其中一个列进行排序,并通过使用别名和在 where 子句中放置条件只获取一条记录。