mysql - 具有多个值的 FIND_IN_SET
问题描述
我想从数据库字段中搜索多个值。以下是我的查询。
SELECT * FROM `tablename`
WHERE FIND_IN_SET('12,13,15,15',category_id)
我如何搜索它对我不起作用。
解决方案
FIND_IN_SET()
只能用于搜索逗号分隔列表中的单个值,它不适用于两个列表。
您需要为每个值单独调用它。
SELECT * FROM tablename
WHERE FIND_IN_SET('12', category_id) OR FIND_IN_SET('13', category_id) OR FIND_IN_SET('15', category_id)
如果你规范化你的模式而不是使用逗号分隔的列表会更好。如果您使用类别 ID 创建一个多对多表,您可以执行以下操作:
SELECT t1.*
FROM tablename AS t1
JOIN item_categories AS c ON t1.id = c.table_id
WHERE c.category_id IN (12, 13, 15)
推荐阅读
- python - PyQt5 信号在两个类之间发射
- c# - C# Type T 返回函数
委托作为参数 - c++ - 当我尝试使用它时,网格根本没有显示
- ios - 如何自定义 SwiftUI SegmentedPicker
- python - OpenCV 文档中的嵌套变量语法应该暗示什么?
- asp.net-core - ASP.NET Core 3.1 SignalR:OnReconnected 方法
- unity3d - 调用 api 并在其后设置数据的统一问题
- javascript - Javascript 1.1 / HTML 3.0 音频播放器
- c - 用c中的另一个临时堆栈对堆栈进行排序会产生分段错误
- laravel - FP_route 上的 Laravel Route 未定义错误