С уважением, вашу проблему практически невозможно решить с помощью простых MySQL запросов. Вы уже обнаружили, насколько велики будут ваши запросы даже для сводки stati c. Для выполнения динамического поворота c (когда имена столбцов определяются фактическими данными в вашей таблице) требуется функция MySQL, вызывающая путаницу Подготовленные операторы . Это гигантская c боль в шее для разработки, отладки и поддержки.
Вам будет намного лучше выполнять эту работу с языком программирования (php, nodejs, c# , java, даже PERL) с хорошими функциями управления списками.
@ Strawberry также правильно, что вы должны нормализовать эти данные. Вместо таблицы с
data
id
email
status1
status2
status4
...
status400
Используйте две таблицы:
data
id
email
detail
id
itemname
value
Итак, строка, подобная этой, в вашей таблице
id email is_mouse is_duck is_dog is_cartoon_character
17 mickey@disney.com 1 0 0 1
будет выглядеть следующим образом
data
17 mickey@disney.com
detail
17 'is_mouse' 1
17 'is_cartoon_character' 1
17 'is_duck' 0 (you can omit this row ... )
17 'is_dog' 0 (... and this one, if you wish)
Большинство разработчиков баз данных предпочитают эту нормализованную форму. Одна веская причина: проще добавлять новые атрибуты, такие как is_ninja_turtle, чем если бы каждый атрибут был столбцом.