2013-12-01 8 views
0

У меня есть таблица пользователей, как это:Mysql: получить грести с большинством совпадающих столбцов

Id --- Privilege1 --- Privilege2 --- Privilege3 --- Privilege4 --- Privilege-5 
1   1    0    0    1    0 
4   0    1    0    0    0 
12   1    1    1    1    0 

ID содержит идентификатор пользователя, а Privilege1 - Privilege5 содержит значение 0 (нет) или 1 (да).

Мне нужно получить идентификатор строки, где большинство Привилегий - 1. В моем примере это должно быть 12, потому что эта строка имеет самое большее 1's. Как я могу это сделать?

+1

Дизайн базы данных ужасен. В следующий раз создайте один столбец для privilege_id как внешнего ключа и другую таблицу для уровней привилегий. –

ответ

-1
SELECT `id`, (`Privilege1` + `Privilege2` + `Privilege3` + `Privilege4` + `Privilege5`) AS `priv` 
FROM `table` 
HAVING `priv` = MAX(`Privilege1` + `Privilege2` + `Privilege3` + `Privilege4` + `Privilege5`) 
+0

Запрос возвращает NULL: нет результата :( – Jordy

+0

Я тестировал @Jordy, и он отлично работает для меня с вашей структурой таблицы. – mcserep

Смежные вопросы