我想检查表中是否有其他记录。我有一个sales
表,并且在此表中,我有2条相同产品的记录,因此实际上该推销员销售的产品不止一种。我需要一个select
查询来检查销售超过1种(不同)产品的销售人员。
表名SALES
-列sales_id
,salesman_name
,product,name
,quantity
只需要显示业务员姓名。
答案 0 :(得分:2)
您可以根据需要使用COUNT(DISTINCT <Field Name>)
。 (与sqlserver
,MySQL
和Oracle
相同)
检查此查询:
SELECT salesman_name
,COUNT(DISTINCT product) ProductCount
FROM Sales
GROUP BY salesman_name
HAVING COUNT(DISTINCT product) >1
答案 1 :(得分:2)
SELECT *
FROM SALES
WHERE salesman_name IN (
SELECT
salesman_name
FROM SALES
GROUP BY product
HAVING COUNT(*) > 1
)
答案 2 :(得分:0)
只需使用聚合:
select salesman_name
from sales
group by salesman_name
having min(product) <> max(product);
如果您希望原始行使用exists
:
select s.*
from sales s
where exists (select 1
from sales s2
where s2.salesman_name = s.salesman_name and
s2.product <> s.product
);
使用sales(salesman_name, product)
上的索引,这应该是获取原始行的最快方法。
答案 3 :(得分:0)
SELECT
salesman_name,product,COUNT(*)
FROM
SALES
GROUP BY
salesman_name,product
HAVING
COUNT(*) > 1