【问题标题】:Comapare values in same column same table比较同一列同一表中的值
【发布时间】:2014-03-23 17:21:46
【问题描述】:

我的桌子是

产品(制造商、型号、类型)

我只想选择相同类型的类型和制造商,并且模型数量大于一个。

样本数据:

maker             model         type
-------------------------------------
 A                 123        computer
 B                 234         laptop
 B                 345         laptop
 C                 456         printer
 C                 543           PC

上述示例数据的答案是 B 和笔记本电脑,因为制造商 B 只生产笔记本电脑,而且还不止一种型号。不是制造商 A,因为即使他制造相同类型的产品,他也只有一种型号。

【问题讨论】:

    标签: mysql sql select where-in


    【解决方案1】:

    这很容易。您正在寻找记录数 > 1 且不同类型数 = 1 的制造商:

    select maker
    from product
    group by maker
    having count(distinct type) = 1 and count(*) > 1;
    

    【讨论】:

    • 如果我包含类型,我想要制造商和类型,它显示“列 'Product.type' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中”。如果我按结果在组中添加类型会出错。
    • 当你选择那些只有 one 类型的制造商时,你可以选择 min(type) 或 max(type) - 当然是相同的 - 来显示类型。
    【解决方案2】:

    试试这个:

    SELECT maker 
    FROM Product
    GROUP BY maker, type
    HAVING COUNT(1) > 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多