php - 如何使用循环编写动态 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,因为我不知道用户选择了什么。我没有动态进入。请帮我解决这个问题。
谢谢
解决方案
你可以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
可以提供帮助的功能,但我们应该避免依赖它。
推荐阅读
- typescript - 打字稿映射类型,有条件地添加可选修饰符
- html - 聚合物纸下拉菜单显示不正确
- performance - 如何有效地生成和连接频谱图
- c++ - 数字在 C++ 中存储为特殊字符
- python - 在 Pytorch 中获取时间序列或序列模型的预测
- python - 如何在 Peewee 中使用 `migrate()`
- javascript - 如何在 csv 中读取数组并将该数组存储在 mongodb 中
- java - 给定一个节点烧掉二叉树
- discord - 如何使 Discord 机器人邀请链接无效?
- python - Pandas 读取 Excel 类型错误:__init__() 缺少 1 个必需的位置参数:'id'