如何在MySQL中过滤掉多个匹配键的记录?

bau*_*ack 2 mysql sql aggregate-functions

我有两辆宝马,两辆梅赛德斯和一辆起亚.他们在带有car_id和brand的MySQL表中.我想知道我只有一个品牌的汽车.所以我期待的回归是在这种情况下的一个记录与'起亚'品牌我不希望宝马或梅赛德斯出现.

编辑

我已经简化了我的问题.对于那个很抱歉.所以这是真正的交易.我有一张带有sid和藏匿的桌子.sid是独一无二的,但隐藏不是.我需要计算独特隐藏的数量.为此,我做到了,

select count(distinct hid) from table
Run Code Online (Sandbox Code Playgroud)

为了计算完整的记录数,我只看了从中返回的行数

select * from table
Run Code Online (Sandbox Code Playgroud)

现在,鉴于隐藏应该只出现一次或两次并且假设我知道有多少次重复的隐藏,我应该能够将重复隐藏数量的一半添加到唯一隐藏的数量上并最终得到全部记录.但是,我已经7点了.所以试图找到我试图做的差异......

select * from ( 
 select distinct hid from table group by hid
  union
 select hid from table group by hid) group by hid
Run Code Online (Sandbox Code Playgroud)

认为这会返回我在第二个查询中显示的不在第一个中的任何hids.但事实并非如此,而且我几乎要坚持从这里开始.有没有办法接受我的两个查询并在hids上获得差异?

我并不意味着差异,因为"从独特的隐藏中减去总隐藏数",我的意思是差异,因为在某些原因中未显示在唯一中的总数中的隐藏数.

OMG*_*ies 7

使用:

  SELECT t.hid
    FROM YOUR_TABLE t
GROUP BY t.hid
  HAVING COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)

先前:

  SELECT t.brand
    FROM YOUR_TABLE t
GROUP BY t.brand
  HAVING COUNT(*) = 1
Run Code Online (Sandbox Code Playgroud)