В моей таблице AWS QLDB есть следующая таблица:
INSERT INTO Testing << {
'MyId': 1,
'MyList': [ 'Item1', 'Item2', 'Item3']
},
{
'MyId': 2,
'MyList': [ 'Item2', 'Item3', 'Item4']
},
{
'MyId': 3,
'MyList': [ 'Item4', 'Item5', 'Item6']
}
>>
Мне нужно иметь возможность получить все документы, содержащие список элементов (которые не взяты из другой таблицы), для которого я использую следующий запрос:
SELECT *
FROM Testing AS t,
t.MyList AS l
WHERE l IN ('Item1', 'Item2', 'Item4')
Тем не менее, это дает следующий вывод
+------+---------------------------+---------+
| MyId | MyList | _3 |
+------+---------------------------+---------+
| 3 | ["Item4","Item5","Item6"] | "Item4" |
+------+---------------------------+---------+
| 1 | ["Item1","Item2","Item3"] | "Item1" |
+------+---------------------------+---------+
| 1 | ["Item1","Item2","Item3"] | "Item2" |
+------+---------------------------+---------+
| 2 | ["Item2","Item3","Item4"] | "Item2" |
+------+---------------------------+---------+
| 2 | ["Item2","Item3","Item4"] | "Item4" |
+------+---------------------------+---------+
Я хочу иметь возможность получить только три отдельных строки. Судя по ошибке, которую я получаю при попытке использовать DISTINCT
, QLDB не поддерживает его, но я бы предпочел использовать *
в моем SELECT
, поэтому я пытаюсь использовать GROUP BY
SELECT *
FROM Testing AS t,
t.MyList AS l
WHERE l IN ('Item1', 'Item2', 'Item4')
GROUP BY t.MyId
Но это дает следующую ошибку:
Ошибка запуска запроса
Семанти c Ошибка: в строке, столбце: такой переменной нет с именем '$ __ partiql__group_by_1_item_0'; Нет такой переменной с именем '$ __ partiql__group_by_1_item_0' (Служба: AmazonQLDBSession; Код состояния: 400; Код ошибки: BadRequestException; Идентификатор запроса: 65vrQHytqHdEL3o9Ym9Xn4)