0

值存储在 company_id 下,例如

["2"]
["2", "1"]

其中 2 和 1 是公司的 ID。现在我想要 ID 2 的所有结果。如何再次触发查询 json 编码数据。

select * from tbl where company_id = 2

这是我需要执行的。

有关更多信息,json 格式是 Zend2 中动态(按数据库值填充)选择列表的结果。

如果它是数组而不是 json,如何执行这个简单的选择查询。

4

2 回答 2

1

MySQL 有一个名为SETYou can use this data type on this task 的数据类型。这将允许您输入逗号分隔的值,并且仍然能够按单个项目进行查询。

手册:http ://dev.mysql.com/doc/refman/5.0/en/set.html

您的查询必须更新为如下内容:

SELECT * FROM tbl_name WHERE FIND_IN_SET('2', company_id);

但是,出现这个问题是因为表格没有正确规范化。当应用程序达到大规模时,添加引用表并查询该引用表将是一个更好的选择。

于 2013-04-09T14:34:28.773 回答
1

由于每个 ID 都是双引号内的数字,因此您可以使用LIKE语句查询:

select * from tbl where company_id LIKE '%"2"%'

如果它是数组而不是 json,如何执行这个简单的选择查询。

您可以将 JSON 存储到 mysql 数据库中,因为它是一个字符串。但是数组不是字符串,所以你不能把它存储在那里。您需要对其进行序列化,但为此您应该更喜欢 JSON。

另一种方法是创建一个表来存储与公司的关系。

于 2013-04-09T14:47:21.433 回答