需要仅获得精确匹配的行

时间:2015-08-26 12:16:39

标签: php mysql

我在这里有一个查询

 make           |  model | disc
 maruti suzuki     ritz     Y  
 maruti suzuki     swift    N
 maruti suzuki     swift    Y
 Hyundai           i10      Y
 Hyundai           i20      Y
 Hyundai           eon      N
 tata              indica   Y
 tata              nano     Y
 tata              safari   Y

我尝试过以下查询

  select * from table_name where disc='Y' and disc!='N'

但是我得到了这样的结果

    make           |  model | disc
    maruti suzuki     ritz     Y  
    maruti suzuki     swift    Y
    Hyundai           i10      Y
    Hyundai           i20      Y
    Hyundai           i10      Y
    Hyundai           i20      Y
    tata              indica   Y
    tata              nano     Y
    tata              safari   Y

现在我需要所有模型必须包含所有型号光盘类型Y

这意味着我的输出应该是

 make              model   disc  
 tata              indica   Y
 tata              nano     Y
 tata              safari   Y     

4 个答案:

答案 0 :(得分:1)

你只需要使用一个简单的WHERE条款,没什么特别的:

SELECT * from cars WHERE make NOT IN (SELECT make FROM cars WHERE disc = 'N')

这是一个有效的 DEMO

答案 1 :(得分:1)

您的查询应该是:

SELECT * FROM my_table WHERE make NOT IN (SELECT make FROM my_table WHERE disc <> 'y')

答案 2 :(得分:0)

您的查询将是:

SELECT  make, model, disc FROM your_table_name WHERE dics='Y'

答案 3 :(得分:0)

您的查询应该是。

select make, model, disc from table_name WHERE make NOT IN (SELECT make FROM table_name WHERE disc = 'N')