Mysql:获取最匹配列的行
我有这样一个用户表:Mysql:获取最匹配列的行,mysql,select,Mysql,Select,我有这样一个用户表: Id --- Privilege1 --- Privilege2 --- Privilege3 --- Privilege4 --- Privilege-5 1 1 0 0 1 0 4 0 1 0 0 0 12 1
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包含用户ID,Privilege1-Privilege5包含值0 no或1 yes
我需要获取大多数特权为1的行的ID。在我的示例中,它应该是12,因为该行最多有1个。我该怎么做?数据库设计太糟糕了。下次,为privilege_id创建一列作为外键,为privilege levels创建另一个表。
SELECT `id`, (`Privilege1` + `Privilege2` + `Privilege3` + `Privilege4` + `Privilege5`) AS `priv`
FROM `table`
HAVING `priv` = MAX(`Privilege1` + `Privilege2` + `Privilege3` + `Privilege4` + `Privilege5`)