Есть ли какой-либо способ поместить условие WHERE во ВСЕ столбцы без использования нескольких AND?

#mysql #sql

#mysql #sql

Вопрос:

Предположим, у меня есть таблица Student с несколькими столбцами Subject

Я хочу выбрать запись студентов, набравших более 70 баллов по ВСЕМ предметам.

Есть ли какой-либо способ сделать это без использования условий ‘multiple’ И

Например, используя приведенный ниже запрос, я должен указать одинаковое условие AND для каждого столбца

ВЫБЕРИТЕ * У студента, ГДЕ математика > 70 И физика > 70 И химия > 70… и так далее

Я ищу что-то вроде:

ГДЕ студент.* > 70

Комментарии:

1. измените структуру таблицы

2. Имена столбцов не обрабатываются подстановочными знаками, поэтому так или иначе вам нужно будет перечислить включенные столбцы

Ответ №1:

По сути, вам нужно использовать несколько AND условий. Вы можете замаскировать это с помощью LEAST() :

 where least(physics, maths, chemistry) > 70
  

Однако ваша основная проблема заключается в вашей модели данных. Вместо столбцов у вас должна быть таблица с одной строкой на каждого учащегося / предмет:

  Table:  StudentSubjects
 studentId    Subject    Grade
  

Тогда вам не нужно было бы упоминать каждый предмет по отдельности.