【发布时间】:2021-05-01 01:16:51
【问题描述】:
我想从下面的reviewed_by 表中查询,其中“公司”为“AAA”,“审核”为“需要审核”
这是mysql表:
+-----------+
| DATA_TYPE |
+-----------+
| text |
+-----------+
+-------------------------+
| reviewed_by |
+-------------------------+
|[{"company":"AAA","review":"OK","reviewed_at":"2021-01-26 08:59:26"}]|
|[{"company":"BBB","review":"OK","reviewed_at":"2021-01-26 08:59:26"}]|
|[{"company":"AAA","review":"Need Review","reviewed_at":"N\/A"}]|
+-------------------------+
这是我尝试过的 #1 查询:
SELECT * FROM `t_transaction`
WHERE `reviewed_by`
LIKE '%`"company":"AAA","review":"Need Review"`%'
这是我尝试过的 #2 查询:
SELECT * FROM `t_transaction`
WHERE `reviewed_by`
LIKE '%"company":"AAA","review":"Need Review"%'
ci3 查询:
$like = ['reviewed_by','"company":"AAA","review":"Need Review"'];
$this->db->select('*')
->from('t_transacion')
->group_by('id')
->like($like[0],$like[1]);
我从这两个查询中得到的结果是什么, 我怎样才能进行这种类型的查询(以及如果使用 codeigniter 3)?
【问题讨论】:
-
#2(没有反引号)应该可以工作。如果不是,则可能不是
LIKE... -
@Benni 你是指上面的查询#2 吗?已经试过了,一无所获
-
我测试了确切的查询(在普通的 MySql 中,而不是 codeigniter),它工作正常
-
MySQL 可以在 JSON 文本中查询,例如:
SELECT * FROM 't_transaction' WHERE reviewed_by->>'$.company' = 'AAA' AND reviewed_by->>'$.review' = 'Need Review'; -
如果您对数据库设计有任何控制权,请不要将 JSON 存储在单个列下,而是将所有这些 JSON 键设为单独的列。它不仅会使您的搜索更容易,而且效率也更高。
标签: php mysql json codeigniter