2015-02-09 8 views
1

Мне нужно получить имена столбцов из таблицы, имеющая Boolean значения для уникального идентификатора, как это:Как получить имя столбца уникального идентификатора и уникального значение Mysql

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'my table name' AND table_schema = 'database name' AND user_id = '1' AND category = '1' 

Может кто-нибудь помочь?

+0

Это никогда не может работать, как есть. Вы не можете присоединиться к полю в одной таблице против VALUE другого поля в другой таблице. И если вы уже знаете имена своих логических полей, почему вы начинаете запрашивать информацию? –

+0

Спасибо за ваш ответ Марк. он будет динамически работать с этим значением Boolean, изменяющимся для каждого пользователя. –

+0

так? это поле в вашем столе. 'select * from yourtable, где booleanfield = true' получит ВСЕ записи, где это поле истинно. –

ответ

0

Если ваша таблица выглядит следующим образом:

+-----+-------+-------+-------+-----+-------+ 
| id | col_1 | col_2 | col_3 | ... | col_N | 
+-----+-------+-------+-------+-----+-------+ 
| 1 | true | NULL | false | ... | true | 
| 2 | NULL | NULL | true | ... | true | 
| 3 | false | false | true | ... | true | 
| ... | ... | ... | ... | ... | ... | 
| M | true | true | NULL | ... | false | 
+-----+-------+-------+-------+-----+-------+ 

затем:

select (
     concat(
      if(col_1, 'col_1, ', ''), 
      if(col_2, 'col_2, ', ''), 
      if(col_3, 'col_3, ', ''), 
      ... 
      if(col_N, 'col_N, ', '') 
     ) 
    ) as `list_of_cols` 
from 
    `table_name` 
where `id` = id_value; 

результат будет выглядеть следующим образом:

+----------------------+ 
|  list_of_cols  | 
+----------------------+ 
| col_1, col_5, col_6, | 
+----------------------+ 
Смежные вопросы