2013-10-24 11 views
-1

Я пишу запрос, как:Mysql выберите запрос для множественного значения

select * 
from table 
where cityid=2 

но проблема в моей базе данных CityId хранится в виде (1.2.3) для нескольких городов Этот запрос не дает мне нужен желаемый результат.

+0

Является ли ваше значение буквально хранится в круглых скобках вокруг него, таких как '(1,2, 3) ', или он хранится без них, например' 1,2,3'? – newfurniturey

ответ

2

Попробуйте это: если вал ваш параметр

Select 
* 
from table 
where cityId like 'val,%' 
or cityId like '%,val,%' 
or cityId like '%,val' 
+0

Это также будет соответствовать '(11,12,13)' с '1',' 2' и '3'. – h2ooooooo

+0

как ?? это неслучайно, пожалуйста, пройдите через немного немного. –

+0

@srikantamondal: мое удовольствие –

0

Не уверен, что, если я правильно понял ваше требование. Основываясь на моем понимании, попробуйте следующее:

select * from table where cityid like '%,2,%'; 
1

Вы можете использовать в MySQL FIND_IN_SET():

SELECT * FROM table WHERE FIND_IN_SET(2, cityid) > 0; 

Однако, я бы на самом деле рекомендуется изменить схему вашей таблицы в не хранить несколько ассоциаций в одном клетка. Вы можете сделать это со второй таблицей, которая отображает отношения (думает create table table_cities (table_id int, city_id int);), а затем использовать join тянуть значение:

SELECT 
    t.* 
FROM 
    table t 
    JOIN table_cities tc 
     ON t.id = tc.table_id 
WHERE 
    tc.city_id = 2; 
Смежные вопросы