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条)

报告相同问题?

悬赏问题

  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 Hadoop集群部署启动Hadoop时碰到问题
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 QTableWidget重绘程序崩溃
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站