如何在 SQLite3 上构建特殊排列

How to build special permutation on SQLite3

我有这个选择:

SELECT modalityID, tagID, name FROM factors

这给了我这个结果:

modalityID   tagID   name

10           21      Ética
40           26      TESTE 
60           45      Contexto Social

我该怎么做才能构建以下排列:

modalityID  tagID   name            ModalityID-B    TagID-B Name-B
10          21      Ética           40              26      TESTE 
40          26      TESTE           60              45      Contexto Social
10          21      Ética           60              45      Contexto Social

请注意,modalityID 必须 < modalityID-B 并且名称不能重复。 我所需要的只是使用一个 table (因子)的元素生成所有可能的不同排列。换句话说,table "factors" 必须与其自身进行比较。

是否可以在 SQLite3 上创建一个 select 来构建它?

此致

类似这样的东西(未测试):

SELECT A.modalityID, A.tagID, A.name, B.modalityID AS modalityID_B, B.tagID AS tagID_B, B.name AS name_B
FROM factors A, factors B
WHERE modalityID < modalityID_B

您可以使用连接条件为 a.modalityID < b.modalityID 的自连接获得此结果。

Here is a working example using your schema in sqlfiddle

SELECT 
  a.modalityID 'a.modalityID', a.tagID 'a.tagID', a.name 'a.name', 
  b.modalityID 'b.modalityID', b.tagID 'b.tagID', b.name 'b.name'
FROM factors a
JOIN factors b ON a.modalityID < b.modalityID