mysql - SQL查询需要很长时间才能响应

标签 mysql sql-server query-builder

我有一个像

这样的 SQL 查询
SELECT c.Case_Id, c.Disease_Sub_Type_Id, p.MedRecNo 
FROM case1 c, patient p, episode e, personal_medical_history pmh, reproductive_history rh 
WHERE c.Age <> '12' AND c.horizontal_spread <> '21' AND c.Patient_Id = p.Patient_Id 
      AND e.Case_Id = c.Case_Id AND pmh.Patient_Id = p.Patient_Id 
      AND rh.Patient_Id = p.Patient_Id 
GROUP BY c.Case_Id`

当我使用上面的查询时,这会很快给出结果,但是当我使用 OR 作为条件时,比如

SELECT c.Case_Id, c.Disease_Sub_Type_Id, p.MedRecNo 
FROM case1 c, patient p, episode e, personal_medical_history pmh, reproductive_history rh 
WHERE c.Age <> '12' OR c.horizontal_spread <> '21' AND c.Patient_Id = p.Patient_Id AND e.Case_Id = c.Case_Id AND pmh.Patient_Id = p.Patient_Id 
      AND rh.Patient_Id = p.Patient_Id 
GROUP BY c.Case_Id`

我没有得到输出并且 MySQL 挂起。是否有任何简单的方法来申请加入或我的方法是错误的?

最佳答案

尝试像这样将您的 OR 括在括号中;

SELECT c.Case_Id
    ,c.Disease_Sub_Type_Id
    ,p.MedRecNo
FROM case1 c
    ,patient p
    ,episode e
    ,personal_medical_history pmh
    ,reproductive_history rh
WHERE (c.Age <> '12'
    OR c.horizontal_spread <> '21')
    AND c.Patient_Id = p.Patient_Id
    AND e.Case_Id = c.Case_Id
    AND pmh.Patient_Id = p.Patient_Id
    AND rh.Patient_Id = p.Patient_Id
GROUP BY c.Case_Id`

关于mysql - SQL查询需要很长时间才能响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36935499/

相关文章:

mysql - 如何将原始 SQL 转换为 Yii2,如查找查询

mysql - 如何使用子查询获取 MIN/MAX

php - 合并 Mysql 列输出作为 php 中的逗号分隔

mysql - 使用重复的找到的 ID 更新重复的行

c# - 如何从不在默认 DBO 架构中的 SQL Server 数据库表中读取数据

java - JPA/Hibernate在获取数据时非常慢

java - Java 中的查询生成器

javascript - 使用 AJAX 从 PHP 检索数据发送到不同的 PHP 文件

sql-server - SQL Server 的 float 小于 2.23E-308( double 的最小值)

php - 从原始查询中获取 Laravel Eloquent Collection