首页 > 解决方案 > 有没有办法在不使用多个 AND 的情况下将 WHERE 条件放在所有列上?

问题描述

假设我有一个包含多个主题列的学生表

我想选择在所有科目中得分高于 70 的学生的记录。

有没有办法在不使用“多个”AND条件的情况下这样做

例如,使用下面的查询我必须为每一列指定相同的 AND 条件

SELECT * FROM Student WHERE Maths > 70 AND Physics > 70 AND Chemistry > 70... 以此类推

我正在寻找类似的东西:

学生在哪里。* > 70

标签: mysqlsql

解决方案


本质上,您需要使用多个AND条件。您可以使用以下方法对此进行屏蔽LEAST()

where least(physics, maths, chemistry) > 70

但是,您的基本问题是您的数据模型。而不是列,你应该有一个表,每个学生/科目一行:

 Table:  StudentSubjects
 studentId    Subject    Grade

那么你就不需要单独提及每个主题了。


推荐阅读