SQL 按存储在数组中的值分组
SQL group by values stored in arrays
我使用 OrientDB。
我有一个像这样的 table:
NAME | CATEGORIES
-------------------
N1 | [A,B]
N2 | [C]
N3 | [C,A]
N4 | [A,B]
我想构建一个查询,其中 returns 一个类别列表,每个类别都有一个相关名称列表,如下所示:
CATEGORY | NAMES
-----------------------
A | [N1,N3,N4]
B | [N1,N4]
C | [N2,N3]
如果 "categories" 不是数组,我可以通过以下方式实现它:
SELECT
Categories as Category,
set(Name) as Names
FROM Table
GROUP BY Categories
但是,作为类别数组,这就是我得到的:
CATEGORY | NAMES
--------------------
[A,B] | [N1,N4]
[C] | [N2]
[C,A] | [N3]
我应该写什么查询?
我用这个命令复制了你的结构
create class test extends v
create property test.name string
create property test.categories embeddelist string
insert into test(name,categories) values ("N1",["A","B"]),("N2",["C"]),("N3",["C","A"]),("N4",["A","B"])
我使用了这个查询
select categories,$a.name as name from (select distinct(categories) as categories from (select categories from test order by categories unwind categories))
let $a = (select name from test where categories contains $parent.$current.categories)
希望对您有所帮助。
我使用 OrientDB。 我有一个像这样的 table:
NAME | CATEGORIES
-------------------
N1 | [A,B]
N2 | [C]
N3 | [C,A]
N4 | [A,B]
我想构建一个查询,其中 returns 一个类别列表,每个类别都有一个相关名称列表,如下所示:
CATEGORY | NAMES
-----------------------
A | [N1,N3,N4]
B | [N1,N4]
C | [N2,N3]
如果 "categories" 不是数组,我可以通过以下方式实现它:
SELECT
Categories as Category,
set(Name) as Names
FROM Table
GROUP BY Categories
但是,作为类别数组,这就是我得到的:
CATEGORY | NAMES
--------------------
[A,B] | [N1,N4]
[C] | [N2]
[C,A] | [N3]
我应该写什么查询?
我用这个命令复制了你的结构
create class test extends v
create property test.name string
create property test.categories embeddelist string
insert into test(name,categories) values ("N1",["A","B"]),("N2",["C"]),("N3",["C","A"]),("N4",["A","B"])
我使用了这个查询
select categories,$a.name as name from (select distinct(categories) as categories from (select categories from test order by categories unwind categories))
let $a = (select name from test where categories contains $parent.$current.categories)
希望对您有所帮助。