mysql - 如何检查是否有一些录音共享相同的名称,但它们在mysql中有不同的类型
问题描述
有一个包含 97972561 行(记录)和 4 列(属性)的表。格式如下:
+------+-------------+-------------+-------------+
| PMID | SUBJECT_NAME| SUBJECT_TYPE| Sentence_ID |
+------+-------------+-------------+-------------+
我想检查是否有一些主题与不同类型的名称相同。例如,一个表中有三个记录:
+------+-------------+-------------+-------------+
| PMID | SUBJECT_NAME| SUBJECT_TYPE| Sentence_ID |
+------+-------------+-------------+-------------+
| 1 | Bob | F | 1 |
+------+-------------+-------------+-------------+
| 2 | Bob | B | 2 |
+------+-------------+-------------+-------------+
| 3 | Bob | F | 3 |
+------+-------------+-------------+-------------+
我不关心有多少情况,只是想检查是否有两个录音具有相同的subject_name,但不同的subject_type。任何帮助,将不胜感激!
解决方案
我会按主题名称聚合,然后断言 max 和 min 类型是不同的:
SELECT SUBJECT_NAME
FROM yourTable
GROUP BY SUBJECT_NAME
HAVING MIN(SUBJECT_TYPE) <> MAX(SUBJECT_TYPE);
请注意我编写HAVING
子句的方式使其sargableSUBJECT_TYPE
,这意味着可能会使用任何索引。以下索引可能会加速此查询:
CREATE INDEX idx ON yourTable (SUBJECT_NAME, SUBJECT_TYPE);
推荐阅读
- flutter - 如何启用 TextFormField 输入颤动
- m2doc - 按种类选择/过滤
- javascript - 在验证时难以识别数据类型
- linux - 如何在将输出加载到 txt 文件时将纯文本作为直线查询输出?
- reactjs - 如何从反应美丽的 dnd 中获取任务的更改状态?
- android - 为什么 Android Studio 不让我选择设备并运行应用程序?
- r - R - 数据框操作
- python - TypeError PYOMO:基于 pandas 数据框定义约束
- c++ - std::srand/rand 和 libuuid uuid_generate 的副作用
- typescript - 如何使用 Parcel 从 TypeScript 中的基本目录导入?