MariaDB 10.2 查询 JSON
MariaDB 10.2 Query with JSON
我的查询有问题;
SELECT *, JSON_VALUE(cms_routing_data, "$.cms_routing_date.field") AS order_row FROM database.cms_routing WHERE cms_routing_module = 'events' AND cms_routing_data != '' AND order_row >= '2018-05-11' ORDER BY order_row ASC LIMIT 0,4
我的数据库看起来像;
CREATE TABLE `cms_routing` (
`cms_routing_id` int(10) NOT NULL,
`cms_routing_module` varchar(50) DEFAULT NULL,
`cms_routing_data` longblob DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我的cms_routing_data长得像;
a:1:{s:16:"cms_routing_date";a:1:{s:5:"field";s:10:"2018-04-29";}}
PHPMyAdmin 响应;
#1054 - Onbekende kolom 'order_row' in where clause
有没有人有这方面的经验可以帮助我?
这里有两个问题;
- 将
WHERE
子句中的 order_row
替换为相应的
表达式,JSON_VALUE(cms_routing_data, "$.cms_routing_date.field")
.
cms_routing_data
对 MariaDB 无效 JSON,已序列化。
一个有用的工具是 dbfiddle 来找出答案。
感谢@sticky-bit 和@wchiquito。
我的查询有问题;
SELECT *, JSON_VALUE(cms_routing_data, "$.cms_routing_date.field") AS order_row FROM database.cms_routing WHERE cms_routing_module = 'events' AND cms_routing_data != '' AND order_row >= '2018-05-11' ORDER BY order_row ASC LIMIT 0,4
我的数据库看起来像;
CREATE TABLE `cms_routing` (
`cms_routing_id` int(10) NOT NULL,
`cms_routing_module` varchar(50) DEFAULT NULL,
`cms_routing_data` longblob DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我的cms_routing_data长得像;
a:1:{s:16:"cms_routing_date";a:1:{s:5:"field";s:10:"2018-04-29";}}
PHPMyAdmin 响应;
#1054 - Onbekende kolom 'order_row' in where clause
有没有人有这方面的经验可以帮助我?
这里有两个问题;
- 将
WHERE
子句中的order_row
替换为相应的 表达式,JSON_VALUE(cms_routing_data, "$.cms_routing_date.field")
. cms_routing_data
对 MariaDB 无效 JSON,已序列化。
一个有用的工具是 dbfiddle 来找出答案。
感谢@sticky-bit 和@wchiquito。