>表格
>我
>姓名
>字段(varchar-255)
> FormFields
>我
>姓名
> InputType
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 |
+------+-------+-----------+
话虽如此,我建议创建一个将Forms连接到Fields的多个表.表格结构粗略轮廓:
>表格(身份证,姓名)
>字段(id,名称,类型)
> FormField(form_id,field_id)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。