将数据与mysql中的一列匹配

时间:2014-08-26 08:00:09

标签: mysql database

以下是sqlFiddle

我想过滤选择实体的用户,所以如果我想过滤实体的用户,说实体有ids“1”和“3”,我希望得到拥有这两个实体的用户。 所选实体的数量不等。

我正在使用的查询是

 SELECT  user_id from user_entities where entity_id IN(1,3)

但是由于显而易见的原因,它正在把我的结果作为

+----+-----------+---------+--------+
| ID | ENTITY_ID | USER_ID | STATUS |
+----+-----------+---------+--------+
|  1 |         1 |       3 |      1 |
|  2 |         3 |       3 |      1 |
|  7 |         1 |       2 |      1 |
| 29 |         3 |       1 |      1 |
+----+-----------+---------+--------+

所以我将对它应用distinct,它将为我提供ID为1,2,3的用户ID,但我只想要用户3,因为这是唯一拥有这两个实体的用户。

可以修改哪些内容以获得准确的结果

1 个答案:

答案 0 :(得分:0)

您可以将表连接到自身,并将两个ID指定为连接条件的一部分:

SELECT e1.user_id
FROM user_entities e1
INNER JOIN user_entities e2
    ON e1.user_id = e2.user_id AND
       e1.entity_id = 1 AND
       e2.entity_id = 3;