php – 获取ID加入逗号分隔列表的所有匹配记录
发布时间:2020-12-13 22:54:49 所属栏目:PHP教程 来源:网络整理
导读:我有两个数据库表,如下所示: 表格 我 姓名 字段(varchar-255) FormFields 我 姓名 InputType Form的示例数据 Id Name Fields1 Form1 1,2,32 Form2 1,2 FormFields的示例数据 Id Name InputType1 FName TEXT2 Lname TEXT3 Email TEXT 现在我写下查询如下: S
我有两个数据库表,如下所示:
>表格 >我 > FormFields >我 Form的示例数据 Id Name Fields 1 Form1 1,2,3 2 Form2 1,2 FormFields的示例数据 Id Name InputType 1 FName TEXT 2 Lname TEXT 3 Email TEXT 现在我写下查询如下: SELECT * FROM FormFields WHERE Id IN (SELECT Fields FROM Form WHERE Id = 2) 我只得到一条记录如下: Id Name InputType 1 FName TEXT 但我想要FormFields表的所有记录,其Id存在于Form表的Fields列中.我想要这样的结果: Id Name InputType 1 FName TEXT 2 Lname TEXT 解决方法
您不能使用IN在逗号分隔的“字符串”中搜索特定值.
您可以使用 FIND_IN_SET :
SELECT FormFields.* FROM Form INNER JOIN FormFields ON FIND_IN_SET(FormFields.id,Form.Fields) > 0 WHERE Form.Id = 2 结果: +------+-------+-----------+ | Id | Name | InputType | +------+-------+-----------+ | 1 | FName | TEXT | | 2 | Lname | TEXT | +------+-------+-----------+ SQL Fiddle 话虽如此,我建议创建一个将Forms连接到Fields的多个表.表格结构粗略轮廓: >表格(身份证,姓名)>字段(id,名称,类型)> FormField(form_id,field_id) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |