在SQL左联接中删除重复项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在SQL左联接中删除重复项相关的知识,希望对你有一定的参考价值。
我想从左联接中删除重复的结果。由于商店中有几种“ schnapp”类型,因此结果是列出了许多相同的商店。我只想看看商店是否携带任何类型的“烈酒”。我将如何获得不同的商店名称?
下面是我写的内容:
SELECT stores.name, sales.category_name
FROM stores LEFT JOIN
sales
ON sales.store = stores.store
WHERE category_name ILIKE '%schnapp%'
提前感谢!
答案
我只想看看商店是否带有任何类型的'schnapp's。我将如何获得不同的商店名称?
一个简单的方法是:
SELECT DISTINCT st.name
FROM stores st LEFT JOIN
sales s
ON s.store = st.store
WHERE s.category_name ILIKE '%schnapp%';
更好的方法是exists
:
select st.*
from stores st
where exists (select 1
from sales s
where s.store = st.store and
s.category_name ilike '%schnapp%'
);
这避免了外部聚集,因此可能更快。
以上是关于在SQL左联接中删除重复项的主要内容,如果未能解决你的问题,请参考以下文章