doufu5521 2014-07-24 17:07
浏览 215
已采纳

MySQL查询中的WHERE和AND

Hi I have a little problem and I can't find the solution. I'm pretty new in MySql.

Let's say I have this Table:

 _______________
|prodID| |propID|
|________|______|
|   1    | 2    |
|   1    | 5    |
|   2    | 6    |
|   2    | 7    |
|   3    | 5    |
|   3    | 2    |
|   3    | 9    |
|   4    | 5    |
|   4    | 3    |
|   5    | 2    |
|   5    | 5    |
|________|______|

prodID is the Product-ID and propID is the Property-ID.
Now I want to get the Products which for example have the property with propID=2 and the property with propID=5. Where the property in propID=2 is "made from glass" and propID=5 is "safe for children". I want that the products (prodID) I get are both. "Made from glass and safe for children". So the propIDs I would get are 1,3 and 5.

This hasn't worked for me:

SELECT prodID FROM table WHERE propID=2 AND propID=5

I hope it's clear what I mean and hope someone can help me.

Thanks

Edit:

Table is now changed at prodID=4. If I would try

SELECT prodID FROM table WHERE propID=2 OR propID=5

I would get 1,3,4 and 5. But that is not what I wanted.

  • 写回答

7条回答 默认 最新

  • doutan1905 2014-07-24 17:17
    关注

    The query you need is:

    SELECT
      prodID
    FROM
      t
    WHERE
      propID IN (2,5)
    GROUP BY
      prodID
    HAVING
      COUNT(DISTINCT propID)=2
    

    Also, note, that it's "exactly 2 properties". If you need "at least '2' and '5' in properties" in the result, then change COUNT(DISTINCT propID)=2 to COUNT(DISTINCT propID)>=2. Check this fiddle.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥50 求解vmware的网络模式问题
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?