0

我的查询有问题;

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

有没有人有这方面的经验并且可以帮助我?

4

1 回答 1

0

有两个问题;

  1. order_rowWHERE相应的表达式替换子句, JSON_VALUE(cms_routing_data, "$.cms_routing_date.field")
  2. cms_routing_data不是 MariaDB 的有效 JSON,它已被序列化。

一个有用的工具是 dbfiddle 来找出答案。

感谢@sticky-bit 和@wchiquito。

于 2018-05-10T10:13:58.920 回答