有一个表“水果供应商”
字段1“供应商” 字段2“水果”
两个字段共为主键
数据库里的格式如下:
A 苹果
A 桔子
B 苹果
B 香蕉
 。
 。
 。
现在  A供应商 不干了
求出 所有能替代 A供应商 的 供应商名单(既供应商A 能供应的所有水果,名单上的每一个供应商都能 独立供应)

解决方案 »

  1.   

    SELECT *
    FROM 水果供应商 t1
    WHERE EXISTS
    (
      SELECT 1
      FROM 水果供应商 t2
      WHERE t2.供应商 = 'A' AND t2.水果 = t1.水果
    )
    AND 供应商 != 'A'
      

  2.   

    不对SELECT 供应商
    FROM 水果供应商 t1
    WHERE EXISTS
    (
      SELECT 1
      FROM 水果供应商 t2
      WHERE t2.供应商 = 'A' AND t2.水果 = t1.水果
    )
    AND 供应商 != 'A'
    GROUP BY 供应商
    HAVING COUNT(*) = (SELECT COUNT(*) FROM 水果供应商 WHERE 供应商 = 'A')
      

  3.   

    还有点小错误
    上面最后一句改成
    HAVING COUNT(*) >= (SELECT COUNT(*) FROM 水果供应商 WHERE 供应商 = 'A')
      

  4.   

    select * from tableName 
    where
    水果名 in (select 水果名 from TableName where 供应商=A) and 
    供应商 <> A
      

  5.   

    xxj_jing() 
    你的 语句不对啊,
    你得出的 供应商 可能只能供应 A拥有的某一个水果,我要的是   “能单独供应A的所有水果 的供应商”