Php MySQL从键/值对表中选择

Php MySQL从键/值对表中选择,php,mysql,sql,database,Php,Mysql,Sql,Database,我在从包含键/值对的表中选择数据时遇到很多问题 我发现了一些与我类似的问题,但不幸的是,我还没有找到解决方案 无论如何,假设这是我的桌子: user_id | item_id | item_amount -------------------------------- 1 | 12 | 5 1 | 15 | 10 2 | 12 | 20 2 | 15 | 30 3 | 12 | 1

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

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

无论如何,假设这是我的桌子:

user_id | item_id | item_amount
--------------------------------
 1      | 12      | 5
 1      | 15      | 10 
 2      | 12      | 20
 2      | 15      | 30
 3      | 12      | 1
 3      | 30      | 5
现在,我想执行一个搜索来选择id为12和15的项目中有5到50个的用户

我(非常天真地)试着做这样的事情

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)
当然,它不起作用。感谢您的反馈。

您很接近:

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
子句过滤到任一条件匹配的行。具有的
可以保证两个条件都匹配给定的用户

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)

这个怎么样?

嗨,戈登。我发现你的解决方案很有效。我希望给你+1,但我的声誉太低了。无论如何,谢谢你的帮助@埃塞特拉:你应该把答案标记为已接受。这会给戈登分数,这是说谢谢的最好方式。@Sloachher谢谢你的建议!