SQL 从 table 中获取符合条件的学生的查询错误

SQL Query Error to get the eligible students from table

我想获得

的结果
  1. subject 应该是 PHY 或 CHE,last_mark 应该大于 74
  2. 对于条件 1,如果失败则 total_gpa 应该大于 2.4125
  3. 无论如何 total_gpa 应该大于 1.5000

我使用的查询如下,

SELECT person_id,name,total_gpa,status 
FROM data_table 
WHERE subject='PHY' | 'CHE' 
   AND last_mark>74 OR total_gpa >2.4125 OR total_gpa > 1.5000

这里我知道我的查询是完全错误的,total_gpa >2.4125 OR total_gpa > 1.5000是没有意义的。但是我无法编写查询来解决我的问题,有人可以帮助我吗?

您需要将内容括在括号中:

SELECT person_id,name,total_gpa,status 
FROM data_table 
WHERE total_gpa > 1.5000 AND (((subject='PHY'  OR subject = 'CHE') 
AND last_mark>74) OR total_gpa >2.4125)

您在对 select 行的查询中请求某些条件。

1.条件1

subject 应该是 PHY 或 CHE,last_mark 应该大于 74。所以查询要像这样

(subject='PHY' OR subject='CHE') AND last_mark > 74

因为,你想要 (TRUE OR FALSE) AND TRUE = 'TRUE'(FALSE OR TRUE) AND TRUE = 'TRUE' 。所以那个时候需要那个支架。

2。条件2

对于条件 1,如果失败则 total_gpa 应该大于 2.4125。所以你要检查是否Condition 1 OR Condition 2。所以查询要像这样

((subject='PHY' OR subject='CHE') AND last_mark > 74) OR total_gpa > 2.4125

3。条件 3

无论如何 total_gpa 应该大于 1.5000。所以你正在检查所有应该有 total_gpa > 1.5000 的学生。所以查询想要像 (ANY CONDITION) AND total_gpa > 1.5000.

(((subject='PHY' OR subject='CHE') AND last_mark > 74) OR total_gpa > 2.4125) AND total_gpa > 1.5000

所以最终查询要像下面这样,

SELECT person_id,name,total_gpa,status
FROM data_table 
WHERE 
(((subject='PHY' OR subject='CHE') AND last_mark > 74) OR total_gpa > 2.4125) 
AND total_gpa > 1.5000