小编Dat*_*der的帖子

MySQL按数组中的键搜索json值

我有一个 JSON 对象数组,并希望返回一个特定的节点。为了简化我的问题,假设数组可能如下所示:

[
    {"Race": "Orc", "strength": 14},
    {"Race": "Knight", "strength": 7},
    ...
]
Run Code Online (Sandbox Code Playgroud)

比如说我想知道骑士的实力。函数JSON_SEARCH,返回路径'$[1].Race',使用路径运算符我可以获得强度。有没有办法将这两者结合起来,所以我可以做以下事情?

SELECT someFunc(myCol,'$[*].Race','Orc','$.strength') AS strength
FROM myTable
Run Code Online (Sandbox Code Playgroud)

我正在使用 MySQL 8.0.15。

mysql json mysql-json mysql-8.0

6
推荐指数
2
解决办法
3977
查看次数

MySQL 8 - JSON_ARRAYAGG 中的排序和过滤

最近安装了MySQL 8.0.11 GA,想优化一些视图,功能,...通常我是这样的:

CREATE TABLE `PublicHoliday` (
  `PublicHoliday_ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `PublicHoliday_Name` varchar(45) NOT NULL,
  `CompanyGroup_ID` int(2) unsigned NOT NULL,
  `Holiday` date NOT NULL,
  `State_ID` int(2) unsigned NOT NULL,
  PRIMARY KEY (`PublicHoliday_ID`),
  UNIQUE KEY `PublicHoliday_Comb` (`CompanyGroup_ID`,`Holiday`,`PublicHoliday_Name`,`State_ID`),
  CONSTRAINT `CompanyGroup_PublicHoliday` FOREIGN KEY (`CompanyGroup_ID`) REFERENCES `CompanyGroup` (`CompanyGroup_ID`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
Run Code Online (Sandbox Code Playgroud)

使用 MySQL 5.7 我不得不做类似的事情

SELECT      CompanyGroup_ID,
            CAST(CONCAT('[',(
                GROUP_CONCAT(
                    DISTINCT JSON_OBJECT(
                        'Holiday', Holiday,
                        'PublicHoliday_Name', PublicHoliday_Name,
                        'PublicHoliday_ID', PublicHoliday_ID
                    )
                    ORDER BY Holiday ASC
                )
            ),']') AS JSON) AS …
Run Code Online (Sandbox Code Playgroud)

mysql json distinct sql-order-by

5
推荐指数
1
解决办法
1547
查看次数

Thruway 管理订阅

我尝试通过 Thruway 设置一个可以管理多个组的 websocket 服务器。类似于聊天应用程序,每个客户端可以同时订阅一个或多个,并将消息广播到整个聊天室。我设法用一个古老版本的 Ratchet 做到了这一点,但由于它运行得不是很流畅,我想切换到高速公路。可悲的是,我找不到任何可以管理群组的东西。到目前为止,我作为 websocket-manager 有以下内容,并且客户端正在使用 Autobahn|js (18.x) 的当前版本。

有没有人知道是否可以使用以下内容管理订阅组?

<?php

require_once __DIR__.'/../vendor/autoload.php';

use Thruway\Peer\Router;
use Thruway\Transport\RatchetTransportProvider;

$router = new Router();
$router->addTransportProvider(new RatchetTransportProvider("0.0.0.0", 9090));

$router->start();
Run Code Online (Sandbox Code Playgroud)

php websocket phpwebsocket autobahn thruway

1
推荐指数
1
解决办法
962
查看次数