mysql - 如何检查同一 ID 在不同行中是否有不同的值?

标签 mysql sql

我有下表:

+----+----------+-------------------+
| 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/

相关文章:

javascript - Internet Explorer 自动从网站下载音乐而不是流式传输

mysql - Excel VBA连接Linux服务器上的MySQL

mysql - SQL中如何判断除法余数是否为0

SQL Server 2005 Profiler 如何查看整个存储过程链

sql - 具有最大限制的运行总计

mysql - mysql表中不存在的字段如何添加

php - 在 PDO 中使用 try 和 catch 的最佳方法是什么

sql - 从oracle数据库中选择日期格式ddmmyyyy

mysql - 具体拆分记录(字符串)为若干字段

php - 删除行不返回原始数字