我有下表:
+----+----------+-------------------+
| ID | ID_CICLO | id_caratteristica |
+----+----------+-------------------+
| 1 | 72 | 2 |
+----+----------+-------------------+
| 2 | 72 | 3 |
+----+----------+-------------------+
| 3 | 73 | 2 |
+----+----------+-------------------+
| 4 | 73 | 4 |
+----+----------+-------------------+
| 9 | 3 | 2 |
+----+----------+-------------------+
| 10 | 3 | 4 |
+----+----------+-------------------+
我想提取 id_caratteristica = 2 且 also 等于 4 的所有 ID。
这是我尝试过的,但它是错误的,因为 And
运算符仅适用于同一行。
SELECT * FROM caratteristiche_ciclo
WHERE id_caratteristica = 2
and id_caratteristica = 4
结果应为 ID_CICLO {3, 73}
。
我怎样才能实现这一目标?
最佳答案
您可以使用基于条件聚合的过滤来解决此问题。首先,获取id_caratteristica IN(2,4)
中的所有ID
。
然后,您可以使用 HAVING
子句过滤掉同时具有 id_caratteristica
值的 ID:
SELECT id
FROM caratteristiche_ciclo
WHERE id_caratteristica IN (2,4)
GROUP BY id
HAVING COUNT(DISTINCT id_caratteristica) = 2
为了获得良好的性能,您可以定义以下覆盖指数:(id, id_caratteristica)
关于mysql - 如何检查同一 ID 在不同行中是否有不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57904404/