我有两辆宝马,两辆梅赛德斯和一辆起亚。他们在带有car_id和brand的MySQL表中。我想知道我只有一个品牌的汽车。所以我期待的回归是这种情况下的一个记录,其中有一个'起亚'品牌,我不想让宝马或梅赛德斯出现。
修改
我过度简化了我的问题。对于那个很抱歉。所以这是真正的交易。我有一张带有sid和藏匿的桌子。 sid是独一无二的,但隐藏不是。我需要计算独特隐藏的数量。要做到这一点,我已经完成了,
select count(distinct hid) from table
为了计算完整的记录数,我只看了从
返回的行数select * from table
现在,鉴于hid应该只出现一次或两次,并且假设我知道有多少次重复的hid,我应该能够将重复数量的一半的hid添加到唯一hid的数量并结束记录的全部数量。但是,我已经离开了7.所以试图找到我试图做的差异......
select * from (
select distinct hid from table group by hid
union
select hid from table group by hid) group by hid
认为这会返回我在第二个查询中显示的不在第一个中的任何hids。但事实并非如此,而且我几乎要坚持从这里开始。有没有办法接受我的两个查询并在hids上获得差异?
我并不是指在“从独特的隐藏中减去总隐藏数量”中的差异,我的意思是差异,因为出于某种原因未在独特隐藏中显示的总数中的隐藏数。
答案 0 :(得分:7)
使用:
SELECT t.hid
FROM YOUR_TABLE t
GROUP BY t.hid
HAVING COUNT(*) > 1
此前:
SELECT t.brand
FROM YOUR_TABLE t
GROUP BY t.brand
HAVING COUNT(*) = 1
答案 1 :(得分:0)
听起来好像你想要一个单独的查询,它将返回记录总数和只发生一次的hid
个数 - 如果是这样,请尝试:
select sum(count_hid) total_count,
sum(case count_hid when 1 then 1 else 0 end) singles_count
from
(select count(*) count_hid
from your_table
group by hid) sq