我正在尝试编写查询以从数据库中获取数据,但没有得到。我想获取ConstituencyId 3的标题。对于第三个选区,我必须显示4个不同的标题。如果用户选择第2和第3选区,则我必须显示第2和第3选区的标题。
SELECT N1.Id, N1.Title From NewsContent N1
Where N1.Id > 0 and
(N1.ConstituencyId like ('%2%') OR N1.ConstituencyId Like ('%3') OR N1.ConstituencyId like ('%4%'));
这是我必须动态编写的电子查询,因为我不知道用户选择什么。没有动态进入。请帮我解决这个问题。
谢谢
答案 0 :(得分:1)
您可以在此处使用FIND_IN_SET
,例如
SELECT N1.Id, N1.Title
FROM NewsContent N1
WHERE
N1.Id > 0 AND
FIND_IN_SET('2', N1.ConstituencyId) > 0 AND
FIND_IN_SET('3', N1.ConstituencyId) > 0;
但是请注意,在ConstituencyId
列中存储CSV意味着您的表尚未完全规范化。由于上述原因,这使查询变得困难,并且更新更加困难,因此这是不理想的。幸运的是,MySQL具有FIND_IN_SET
函数可以提供帮助,但是我们应该避免依赖它。