sql - SQL GROUP BY 并为每个 GROUP 创建元素
问题描述
更新:
我能够解决这个问题INSERT INTO
:
INSERT INTO newClass
FROM
SELECT newClassID AS id, newClassName AS name
FROM oldClass
GROUP BY newClassID
我将 SQL 与 Orient DB 2.2 版一起使用。我想按属性对一个类的元素进行分组newClassID
(这个类中有多个元素共享newClassID
,假设我在第一类中有 20 个元素和 3 个唯一元素newClassID
)。每个组都将具有独特性newClassID
,并且newClassName
这些属性齐头并进。对于每个组,我想创建另一个类 ( newClass
) 的元素,该元素将具有id = newClassID and name = newClassName
. 在上述情况下,这将导致newClass
.
第一类的 Elelemt 看起来像:
元素 | 新类ID | 新类名 |
---|---|---|
1 | id1 | 名称1 |
2 | id2 | 名称2 |
3 | id1 | 名称1 |
4 | id3 | 名称3 |
5 | id2 | 名称2 |
我想在新类中创建 3 个新元素:
元素 | ID | 姓名 |
---|---|---|
1 | id1 | 名称1 |
2 | id2 | 名称2 |
3 | id3 | 名称3 |
通过这个查询,我得到 id 和 name 作为属性:
BEGIN
let pattern = SELECT newClassID, newClassName
FROM oldClass GROUP BY newClassID
COMMIT
RETURN { 'id' : $pattern.newClassID, 'name' : $pattern.newClassName }
结果:
[
{
"@type": "d",
"@version": 0,
"name": [
"name1",
"name2",
"name3"
],
"id": [
"id1",
"id2",
"id3"
],
"@fieldTypes": "name=e,id=e"
}
]
现在我想调用这个函数(称为GetNewClass()
)并为 id a 中的每个条目创建newClassElement
。我不能使用FOREACH
,因为这仅适用于 3.x 版本。老实说:在这里我不知道如何做到这一点..
我试过了:
BEGIN
INSERT INTO newClass FROM SELECT GetNewClass()
let newElements = SELECT FROM newClass
RETURN $newElements
但这给了我一个元素:
[
{
"@type": "d",
"@rid": "#41:1",
"@version": 1,
"@class": "newClass",
"GetProdID": {
"name": [
"name1",
"name2",
"name3"
],
"id": [
"id1",
"id2",
"id3"
]
}
}
]
非常感谢!
解决方案
推荐阅读
- javascript - 如何在 Element UI 的数据表中使用分页?
- python - TypeError:按钮对象不可调用。无法从具有另一个函数的 __init__ 函数访问 Button 的属性
- azure - 当我的订阅/位置没有可用大小时,如何在 Azure 上创建虚拟机
- kubernetes - 由于死锁,Pod 没有准备好
- laminas - 在层中添加 i18n 功能
- assembly - 从用户输入中添加两个数字 0 - 255,并在 Assembly x86 8086 中打印
- javascript - React-Native 应用程序上只有边框底部阴影效果
- java - 继续使用 maven 获取 java.lang.NoClassDefFoundError
- android - Flutter 更新 Appbar 中的文字
- pseudocode - “|=”在伪代码中是什么意思?