性能上我大概了解了,不过 我执行了这样一个语句SELECT
swg
FROM
t_histable
WHEREAND status='0'
AND not exists
(
SELECT
swg
FROM
t_histable
WHERE
STATUS = '1'
)
子句查出来的是一条记录 如果改成
SELECT
swg
FROM
t_histable
WHEREAND status='0'
AND swglm not in
(
SELECT
swg
FROM
t_histable
WHERE
STATUS = '1'
)
查出来的结果没问题,但是用not exists 却查不出来记录 , 搞不清楚了
swg
FROM
t_histable
WHEREAND status='0'
AND not exists
(
SELECT
swg
FROM
t_histable
WHERE
STATUS = '1'
)
子句查出来的是一条记录 如果改成
SELECT
swg
FROM
t_histable
WHEREAND status='0'
AND swglm not in
(
SELECT
swg
FROM
t_histable
WHERE
STATUS = '1'
)
查出来的结果没问题,但是用not exists 却查不出来记录 , 搞不清楚了
例子:(高效)SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND EXISTS (SELECT ‘X' FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB’)
(低效)SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB’)
--写法有点小问题,改为这样
SELECT
swg
FROM
t_histable
WHERE status='0'
AND not exists
(
SELECT
swg
FROM
t_histable t1
WHERE
STATUS = '1'
and t_histable.swglm=t1.swg--必须关联到你的查询表,不然not exists变成了对于整个查询变成了一个布尔型的了
)