SQL检查表中是否有不同的记录

时间:2019-03-07 13:53:18

标签: sql

我想检查表中是否有其他记录。我有一个sales表,并且在此表中,我有2条相同产品的记录,因此实际上该推销员销售的产品不止一种。我需要一个select查询来检查销售超过1种(不同)产品的销售人员。

表名SALES-列sales_idsalesman_nameproduct,namequantity

只需要显示业务员姓名。

Example data and expectation

4 个答案:

答案 0 :(得分:2)

您可以根据需要使用COUNT(DISTINCT <Field Name>)。 (与sqlserverMySQLOracle相同) 检查此查询:

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