Как я могу использовать Group by
и Group_concat
для достижения обоих указанных ниже случаев с помощью одного SQL-запроса?
В случае 1, даже если идентификатор группы для устройств 1,2 и 3,4 отличается, идентификатор устройства вывода все равно должен объединяться, поскольку имя и платформа группы 1 и группы 2 совпадают.
CASE 1<br>
Table: SMARTPHONE
==========================================
GROUP_ID DEVICE_ID NAME PLATFORM
1 1 LG ANDROID
1 2 APPLE IOS
2 3 LG ANDROID
2 4 APPLE IOS
<br>
Desired Output
ROW DEVICE_ID
0 1,2,3,4
Для случая 2, поскольку одно из значений имени в группе 2 отличается от группы 1
(т. Е. Device 3, Samsugn не равно Device 1, LG), поэтому оно будет разделено на две разные группы.
CASE 2<br>
Table: SMARTPHONE
==========================================
GROUP_ID DEVICE_ID NAME PLATFORM
1 1 LG ANDROID
1 2 APPLE IOS
2 3 SAMSUGN ANDROID
2 4 APPLE IOS
Desired Output
ROW DEVICE_ID
0 1,2
1 3,4
Это похоже на сравнение всех значений как группы. Если группа имеет значения, идентичные другой группе, их идентификаторы должны быть сгруппированы вместе, как в случае 1. Если нет, они должны быть разделены.
То, что я попробовал, предложено @ Zaynul Abadin Tuhin.
Для случая 1 я пытался select 1 as grp,group_concat(DEVICE_ID SEPARATOR ',')
from school group by grp
union
select GROUP_ID,group_concat(DEVICE_ID SEPARATOR ',')
from school group by GROUP_ID
Но я получаю
Output
ROW DEVICE_ID
0 1,2,3,4
1 1,2
2 3,4
Я ожидаю, что если я выполню запрос в случае 1, он даст мне желаемый результат, показанный в первом случае. Если я выполню тот же запрос в случае 2, он даст мне желаемый результат, показанный в случае два.