我有两个不同逻辑的查询,我试图找到两者之间的区别。
例如:
我如何在两个查询之间找到剩余的8个值?我尝试过以下但仍然没有运气:
Q1 except Q2
UNION
Q2 except Q1
答案 0 :(得分:3)
(Query for Selecting all the names with vowels)
EXCEPT
(Query for Selecting all the names ending in vowels)
答案 1 :(得分:1)
另一个选择是使用所需的where
子句编写查询。
select *
from t
where name like '%[aeiou]%'
and name not like '%[aeiou]'
使用两个common table expressions和not exists()
的另一个选项:
with q1 as (
/* query 1 */
)
, q2 as (
/* query 2 */
)
select *
from q1
where not exists (
select 1
from q2
where q1.name = q2.name
)
答案 2 :(得分:0)
根据您的描述,查询1的结果必须包含query2的重新包含。 所以你可以使用
Q1 EXCEPT Q2
或Q1不存在Q2的情况
答案 3 :(得分:0)
如果您要查询大数据,则EXCEPT成本很高。所以你可以选择LEFT OUTER JOIN
select * from Q1 left outer join Q2 on Q1.ID=Q2.ID where Q2.ID IS NULL