如何使用循环编写动态SQL查询

时间:2018-11-15 10:34:31

标签: php mysql

please check the imageenter image description here

我正在尝试编写查询以从数据库中获取数据,但没有得到。我想获取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%'));

这是我必须动态编写的电子查询,因为我不知道用户选择什么。没有动态进入。请帮我解决这个问题。

谢谢

1 个答案:

答案 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函数可以提供帮助,但是我们应该避免依赖它。