SQL 存在命令
SQL Exists command
我有一个要优化的查询。我想尝试使用 'EXISTS' 命令,而不是 'IN' 命令,但每当我尝试实施 'EXISTS' 时,它 returns 的行数比应有的多。
查询 'IN':
SELECT count(*)
FROM echosign_devbox.participation as p
left join echosign_devbox.agreement as a
on p.agreement_id=a.agreement_id
where a.status not in ('SIGNED', 'ABANDONED', 'EXPIRED', 'ABANDONED_BEFORE_SEND');
有谁知道我应该如何更改才能使用 'EXISTS' 命令?谢谢!
SELECT count(*)
FROM echosign_devbox.participation as p
WHERE NOT EXISTS ( SELECT 1
FROM echosign_devbox.agreement as a
WHERE p.agreement_id = a.agreement_id
AND a.status IN ('SIGNED', 'ABANDONED', 'EXPIRED', 'ABANDONED_BEFORE_SEND' ) );
a
需要 INDEX(agreement_id, status)
这会给出 'correct' 答案吗?
SELECT COUNT(*)
FROM echosign_devbox.agreement
WHERE status NOT IN ('SIGNED', 'ABANDONED', 'EXPIRED', 'ABANDONED_BEFORE_SEND')
表之间有什么关系? 1:1? 1:many?
我有一个要优化的查询。我想尝试使用 'EXISTS' 命令,而不是 'IN' 命令,但每当我尝试实施 'EXISTS' 时,它 returns 的行数比应有的多。
查询 'IN':
SELECT count(*)
FROM echosign_devbox.participation as p
left join echosign_devbox.agreement as a
on p.agreement_id=a.agreement_id
where a.status not in ('SIGNED', 'ABANDONED', 'EXPIRED', 'ABANDONED_BEFORE_SEND');
有谁知道我应该如何更改才能使用 'EXISTS' 命令?谢谢!
SELECT count(*)
FROM echosign_devbox.participation as p
WHERE NOT EXISTS ( SELECT 1
FROM echosign_devbox.agreement as a
WHERE p.agreement_id = a.agreement_id
AND a.status IN ('SIGNED', 'ABANDONED', 'EXPIRED', 'ABANDONED_BEFORE_SEND' ) );
a
需要 INDEX(agreement_id, status)
这会给出 'correct' 答案吗?
SELECT COUNT(*)
FROM echosign_devbox.agreement
WHERE status NOT IN ('SIGNED', 'ABANDONED', 'EXPIRED', 'ABANDONED_BEFORE_SEND')
表之间有什么关系? 1:1? 1:many?