MYSQL查询AND子句

时间:2014-06-06 12:34:18

标签: mysql

我有这张桌子。我想过滤那些具有特定功能ID的ID。

+------------+-------------------+
| id         | feature_id        |
+------------+-------------------+
| 1280230    |                21 |
| 1280230    |                22 |
| 1280230    |                16 |
| 20412TH    |                36 |
| 20412TH    |                41 |
| 20412TH    |                18 |
| 34173TH    |                36 |
| 34173TH    |                40 |
| 37282TH    |                16 |
| 37282TH    |                18 |
| 37282TH    |                38 |
| 37282TH    |                40 |
| 39341TH    |                41 |
| 1244064    |                16 |
| 1244064    |                18 |
+------------+-------------------+

例如

具有特征21和22 =>的ID 1280230

具有16和18 =>的特征的ID 37282TH,1244064

我写了以下查询,但这不能获得正确的结果。

SELECT `id`, `feature_id` FROM features WHERE `feature_id`=16 AND `feature_id`=18

任何帮助?

1 个答案:

答案 0 :(得分:4)

单个记录不能同时具有2个不同的值。所以你必须建立小组并查看整个小组。

SELECT id 
FROM features 
WHERE feature_id in (16,18)
group by id
having count(distinct feature_id) = 2

您需要按id进行分组,然后只记录具有这些feature_id的记录。使用having子句,您可以确保只使用那些包含idfeature_id的{​​{1}}个{{1}}