【问题标题】:MySQL select from key/value pairs tableMySQL 从键/值对表中选择
【发布时间】:2018-01-31 00:32:40
【问题描述】:

我在从包含键/值对的表中选择数据时遇到很多问题。

我发现了一些与我类似的问题,但不幸的是,我什至还没有找到解决方案。

Need a MySQL query for selecting from a table storing key value pairs

How to select data from a key value pair table

不管怎样,假设这是我的桌子:

user_id | item_id | item_amount
--------------------------------
 1      | 12      | 5
 1      | 15      | 10 
 2      | 12      | 20
 2      | 15      | 30
 3      | 12      | 1
 3      | 30      | 5

现在,我想对拥有 5 到 50 个 ID 为 12 和 15 的项目的 SELECT 用户执行搜索。

我(非常天真地)尝试类似

SELECT user_id 
FROM user_item 
WHERE (item_id = 12 AND item_amount BETWEEN 5 AND 50) 
AND (item_id = 15 AND item_amount BETWEEN 5 AND 50)

当然,它不起作用。感谢您的任何反馈。

【问题讨论】:

    标签: php mysql sql database


    【解决方案1】:

    你很接近:

    SELECT user_id
    FROM user_item
    WHERE (item_id = 12 AND item_amount BETWEEN 5 AND 50) OR
          (item_id = 15 AND item_amount BETWEEN 5 AND 50)
    GROUP BY user_id
    HAVING COUNT(DISTINCT item_id) = 2;
    

    WHERE 子句过滤到任一条件匹配的行。 HAVING 保证两个条件都匹配给定用户。

    【讨论】:

    • 嗨,戈登。我发现您的解决方案效果很好。我想给你+1,但我的声誉太低了。无论如何,感谢您的帮助!
    • @ecetera:您应该将答案标记为已接受。这会给 Gordon 加分,是表示感谢的最佳方式。
    • @SloanThrasher 谢谢你的建议!
    【解决方案2】:
    SELECT user_id FROM user_item WHERE (item_id = 12 AND item_amount BETWEEN 5 AND 50) OR (item_id = 15 AND item_amount BETWEEN 5 AND 50)
    

    这个怎么样?

    【讨论】:

      猜你喜欢
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      相关资源
      最近更新 更多