php - MySQL 从键/值对表中选择

标签 php mysql sql database

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

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

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

How to select data from a key value pair table

无论如何,假设这是我的 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 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 子句过滤到任一条件匹配的行。 HAVING 保证两个条件都匹配给定用户。

关于php - MySQL 从键/值对表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48532673/

相关文章:

PHP 安全性(strip_tags、htmlentities)

python - mysql.connector.errors.InternalError : Unread result found during UPDATE

mysql - 表之间的多个连接

php - 如果记录不存在,如何比较表并显示?

mysql - MySQL表中累计到差分数据

mysql - 从 "data"文件夹mysql转储数据

php - 刷新或打开页面会将空数据插入我的数据库! PHP, 来自

php - 比较两个关联二维数组之间的差异,并在用默认值填充一个数组后,丢弃没有差异的行

c++ - 在 C++ 中连接到 sql?

php - 如何存储此递归函数的结果?