首页 > 解决方案 > 如何使用循环编写动态 sql 查询

问题描述

请检查图像.在此处输入图像描述

我正在尝试编写一个查询以从数据库中获取数据,但没有得到。我想获取 ConstituencyId 3 的标题。对于第 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%'));

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

谢谢

标签: phpmysql

解决方案


你可以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;

但请注意,将 CSV 存储在ConstituencyId列中意味着您的表未完全规范化。这并不理想,由于上述原因,它使查询变得困难,更新变得更加困难。幸运的是,MySQL 有一个FIND_IN_SET可以提供帮助的功能,但我们应该避免依赖它。


推荐阅读