0

わかりました、列の数が変動する権限テーブルがあります。このテーブルに依存するページにナビゲーション バーがあります。いくつかのモジュールを表示できる人もいれば、表示できない人もいます。私がやりたいのは、値が 0 ではないすべての列を選択することです。

table modperm
     uid 1234
     module1 0
     module2 2
     module3 1
     module4 0
     module5 0
     module6 1
...
...
...

のようなことをする方法はありますか

SELECT * FROM `modperm` WHERE `uid`='1234' AND value<>0
4

2 に答える 2

0

この長いクエリを試すことができますが、役立つ場合があります。

select uid , group_concat(val) as vals from (
SELECT uid, module1 AS val
FROM  modperm
WHERE module1 !=0
and uid = 1234

UNION ALL
SELECT uid , module2 
FROM  modperm 
WHERE module2 !=0
and uid = 1234

UNION ALL
SELECT uid, module3 
FROM  modperm
WHERE module3 != 0
and uid = 1234

UNION ALL
SELECT uid ,module4 
FROM  modperm 
WHERE module4 !=0
AND uid = 1234

UNION ALL
SELECT uid, module5 AS val
FROM  modperm
WHERE module5 !=0
and uid = 1234

UNION ALL
SELECT uid ,module6 
FROM  modperm 
WHERE module6 !=0
and uid =1234
)t

デモ

モジュール名を表示したい場合

このデモを見て

于 2013-06-19T16:36:38.650 に答える