我有这张桌子。我想过滤那些具有特定功能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
任何帮助?
答案 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
子句,您可以确保只使用那些包含id
个feature_id
的{{1}}个{{1}}