我有两个如下的数据库表:
表格的样本数据
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 Name InputType
1 FName TEXT
2 Lname TEXT
您不能IN
在逗号分隔的“ string”内搜索特定值。
您可以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 |
+------+-------+-----------+
话虽如此,我建议创建一个将表格连接到字段的多表。表结构的大致轮廓:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句