2015-02-20 1 views
0
id | name | permission 
1 | John | 1,4,3 
2 | mike | 7,4,3 
3 | sky | 3,2,1 

это моя база данныхкак использовать где условие из сохраненных данных в массиве

теперь у меня есть выборки запроса на выборку с условием, где

например выберите * from friend где разрешение = '4'

но я не могу получить какие-либо данные, чтобы что делать?

Пожалуйста, помогите

+2

Не хранить значения разрешения, как это, это будет только причинить вам много проблем. Имейте по одному ряду для каждого разрешения! И, кроме того, используйте правильные типы данных, целые в этом случае! – jarlh

+0

find_in_set или что-то в этом роде для запроса mysql. –

+2

Нормализация для этой цели! хранить разные разрешения в разных строках – Vihar

ответ

2

Select * от друга, где FIND_IN_SET ('4', разрешение);

+0

thanx это работает. – Samar

+0

Примите это как ответ, если найдете его работу для вас. Благодаря! –

2

Похоже, что у вас есть несколько разрешений, хранящихся вместе в строке.

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

select * from friend where permission='4' 

Это означает, что что-нибудь, содержащее 4. To MySQL, он видит:

select * from friend where permission= ONLY '4' 
// Meaning the permissions column can ONLY CONTAIN 4. 
// Also, ONLY is meant as a visual, don't use it in queries. 

Try:

find_in_set('4',permission) <> 0 
// This means It needs to find number 4 and can't return 0 results. 

Заканчивать для получения дополнительной информации:

MySQL query finding values in a comma separated string

http://www.w3resource.com/mysql/string-functions/mysql-find_in_set-function.php

0

Это можно сделать с помощью следующего запроса:

select * from friend where permission like '%4%' 
+1

Это плохой пример, поскольку он позволит что угодно с 4. Так что если по какой-то причине было разрешение 4 и 14, это позволило бы обоим, даже если они хотели только 4. Это потому, что он просто находит что-то с 4 в это от того, как вы его написали. –

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