我怎样才能插入一行?
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 子句中放置条件只获取一条记录。
如何让这段代码只插入第一人称,而不是全部,如何满足指定条件?? 还有一个问题:我可以让这段代码更优化吗?以及如何?
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 子句中放置条件只获取一条记录。