我一直在寻找这个问题几个小时。我已经设置了一个MariaDB服务器并且正在实现动态列,我知道该怎么做,但我似乎无法找到如何超过一个级别。
INSERT INTO Invoices (Invoice) VALUES (
COLUMN_CREATE ('Monthly Fee', 500)
);
这是有效的,但我需要的东西可以让我有类似下面的SELECT for JSON:
{
"services": {
"Monthly Fee": 500,
"OnSite": {
"Units": 10,
"Rate": 35
},
"Mileage": {
"Units": 181.8,
"Rate": 0.5
},
"Hard Drive Purchase": {
"Units": 1,
"Rate": 68.99
}
}
}
我无法弄清楚如何将键的值作为另一个具有自己的键值的动态列:值对。
我试过了:
INSERT INTO Invoices (Invoice) VALUES (
COLUMN_CREATE ('Monthly Fee', 500,
'OnSite',
COLUMN_CREATE('Units',10,'Rate','35')
)
);
在我需要的地方嵌套。我希望这是可能的,我只是有一个简单的语法错误。
非常感谢任何帮助。
答案 0 :(得分:1)
对于任何可能想要解决这个问题的人:
这是语法错误。以下语法为我提供了所需内容:
SET @tmp = column_create (
'services',
column_create (
'RMM',
column_create ('Rate', 650),
'OnSite',
column_create ('Units', 10, 'Rate', 35),
'Mileage',
column_create ('Units', 181.8, 'Rate', 0.50),
'Hard Drive Purchase',
column_create ('Units', 1, 'Rate', 68.99)
)
);
SELECT
COLUMN_JSON (@tmp);