环境:win2003+php+mysql表A结构
ID 名称 仓库 数量
1  西瓜 一号 10
2  西瓜 二号 30
3  西瓜 三号 404  大米 一号 50
5  大米 二号 306  苹果 一号 10
7  苹果 二号 45
8  苹果 三号 5
怎样写SQL语句或用其他操作得出,按名称分组的查询多个仓库符合数量的记录。比如:已知,一号仓库数量为10,并且二号仓库数量为30的数据,求符合条件的是哪一个名称?
得到的正确记录应为:ID 1 西瓜,ID 2 西瓜

解决方案 »

  1.   

    SELECT id,名称,仓库 from 表A WHERE ( 仓库='一号' and 数量='10' ) or (仓库='二号' and 数量='30' )
      

  2.   

    SELECT id,名称,仓库 FROM WHERE 仓库='二号' and 数量='30' and 名称 in (SELECT 名称 from 表A WHERE  仓库='一号' and 数量='10') 
      

  3.   

    SELECT id,名称,仓库 FROM 表A WHERE 仓库='二号' and 数量='30' and 名称 in (SELECT 名称 from 表A WHERE  仓库='一号' and 数量='10') 
      

  4.   

    SELECT id,名称,仓库 FROM 表A WHERE 仓库='二号' and 数量='30' and 名称 in (SELECT 名称 from 表A WHERE  仓库='一号' and 数量='10') 
      

  5.   

    倒,谁告诉你in的效率低呢.
    呵呵.名称做为查询条件,加上索引.
    其实你如果不想用in可以用left join或者inner join或者用两表联合.
    至于哪个效率高,你可以自已整几百W条记录,来测试一下.