sql - MySQL如何过滤出多个匹配键的记录?

标签 sql mysql aggregate-functions

我有两辆宝马、两辆奔驰和一辆起亚。它们在带有 car_id 和 brand 的 MySQL 表中。我想知道我只有一辆什么品牌的汽车。所以我希望返回的是在这种情况下带有“起亚”品牌的记录,我根本不希望 BMW 或 Mercedes 出现。

编辑

我过度简化了我的问题。对于那个很抱歉。所以这是真正的交易。我有一张带有 sid 和 hid 的表。 sid 是唯一的,但 hid 不是。我需要计算独特隐藏的数量。为此,我已经做到了,

select count(distinct hid) from table

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

select * from table

现在,假设 hid 应该只出现一次或两次,并且我知道重复的 hid 有多少次,我应该能够将重复的 hids 数量的一半添加到唯一的 hids 数量上并结束达到记录的完整数量。但是,我 7 点就下类了。因此,为了找出我尝试做的不同之处...

select * from ( 
 select distinct hid from table group by hid
  union
 select hid from table group by hid) group by hid

认为这会返回我在第二个查询中显示但不在第一个查询中的所有 hids。但事实并非如此,我几乎不知道从这里去哪里。有没有办法接受我的两个查询并在 hids 上进行比较?

我的意思不是“从独特的 hids 中减去总的 hids”中的差异,我的意思是差异,因为由于某种原因没有显示在独特的 hids 中的总数。

最佳答案

使用:

  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

关于sql - MySQL如何过滤出多个匹配键的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147062/

相关文章:

sql - Drupal 节点表和 SQL 性能问题

mysql - 选择mysql中所有 parent 记录

mysql - 如何在MySQL中临时禁用外键约束?

mysql - 如何在涉及更新语句的查询中连接多个选择语句的结果

javascript - Ajax获取内容后,我想调用另一个ajax函数

sqlite - 最后 10 行的平均结果

php - 从由 CSV 填充的数据库表中填充多个 HTML 表

php - 使用 php ajax 检查用户名和密码

相关表的mysql平均计数

php - 直接从Mysql查询数据生成报告(使用groupby、count)