【问题标题】:MySQL select one field from table WHERE condition is in multiple rowsMySQL 从表中选择一个字段 WHERE 条件在多行中
【发布时间】:2010-12-30 01:46:37
【问题描述】:

试图找到答案,但还是找不到..表格如下:

id、关键字、值 1 显示 15.6 1个硬盘320 1 公羊 3

所以我需要的是这样的.. 从此表中选择一个 ID,其中 (keyword="display" and value="15.6") AND (keyword="harddrive" and value="320") 也有可能会有 3 或 4 个这样的关键字条件导致返回一个 id(一行)

似乎有一些东西要处理UNION,但我之前没有使用它,所以我无法弄清楚

提前致谢

【问题讨论】:

    标签: mysql select union conditional-statements where


    【解决方案1】:

    这是一个relational division 问题。像下面这样的东西应该可以做到。

    SELECT id
    FROM your_table
    WHERE 
    (keyword="display" and value="15.6") OR (keyword="harddrive" and value="320")
    GROUP BY id
    HAVING COUNT(*) = 2
    

    我假设您的表具有适当的约束,因此不可能有完全重复的行。 (例如id, keyword上有一个PK)

    【讨论】:

    • 就是这样!谢谢你!链接很好,我已经在研究它了。完美:)哦,是的,绝对禁止重复的行
    【解决方案2】:
    SELECT DISTINCT id FROM table
    WHERE 
    (keyword="display" and value=15.6) OR (keyword="harddrive" and value=320)
    

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 2013-04-25
      • 2011-01-08
      • 2021-11-28
      相关资源
      最近更新 更多