MySQL 在用户元表中选择/加入多行

标签 mysql join meta

我有一个名为 user_meta 的表,它包含如下数据:

---------------------------
| user_id | field | value |
---------------------------
|    1    |   1   | Green  |
|    1    |   2   | Square |
|    1    |   3   | Big    |
|    2    |   1   | Red    |
|    2    |   2   | Square |
|    2    |   3   | Small  |
----------------------------

field 列是用户配置文件中表单字段的编号。 value 列是用户通过表单提交的值。

如何编写 MySQL 查询以返回所有具有“绿色大方 block ”的用户?

谢谢!

最佳答案

这将返回您想要的结果。这使用 WHERE 子句返回所有具有所需值的记录,然后计算不同的值以确保只有 3 个:

select user_id
from user_meta
where value in ('Green', 'Square', 'Big')
group by user_id
having count(distinct value) = 3

参见 SQL Fiddle with Demo

关于MySQL 在用户元表中选择/加入多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14842277/

相关文章:

mysqldump 在转储中间插入 "drop database"语句

sql-server - 该查询如何在执行计划中生成两个连接运算符?

javascript - 仅当元标记存在时才显示 div

google-app-engine - 增加新创建的网站上的流量以及如何在谷歌搜索之上移动它

mysql - 在 Django 中, `class Meta:` 声明放在哪里重要吗?

php - 如何在 "OR LIKE"条件 Laravel 中使用 "AND"

php - 错误 : Undifined Variable when creating new file

sql - MySQL GROUP_CONCAT 令人头痛

mysql - SQL 性能 : Which is quicker? IN() 与 JOIN

apache-spark - 使用数据集在 Apache Spark 中交叉加入非常慢