我正在写一个类似的查询:
select *
from table
where cityid=2
但问题出在我的数据库中,cityid存储为(1,2,3)多个城市 这个查询没有给我想要的结果。
答案 0 :(得分:2)
试试这个:如果 val 是你的参数
Select
*
from table
where cityId like 'val,%'
or cityId like '%,val,%'
or cityId like '%,val'
答案 1 :(得分: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;
答案 2 :(得分:0)
不确定我是否正确理解您的要求。根据我的理解,试试这个:
select * from table where cityid like '%,2,%';