#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
Тогда вам не нужно было бы упоминать каждый предмет по отдельности.