[英]SQL: Detect multiple same entries as a batch
用例如下。 當我有多個內容相同的條目時,除了一些重要的鍵之外,結果應該以某種方式組合在一起,具體取決於確切的數據。
------------------------------------
| student_id | subject_id | marks |
------------------------------------
| STD001 | SUB001 | 10 |
| STD001 | SUB002 | 20 |
| STD002 | SUB001 | 10 |
| STD002 | SUB002 | 20 |
| STD003 | SUB001 | 11 |
| STD003 | SUB002 | 20 |
| STD004 | SUB001 | 11 |
| STD004 | SUB002 | 20 |
| STD005 | SUB001 | 11 |
| STD005 | SUB002 | 20 |
| STD005 | SUB003 | 30 |
------------------------------------
預期的最終結果
-------------------------------------------------
| subject_id_str | marks_str | student_id |
-------------------------------------------------
| SUB001_SUB002 | 10_20 | STD001 |
| SUB001_SUB002 | 10_20 | STD002 |
| SUB001_SUB002 | 11_20 | STD003 |
| SUB001_SUB002 | 11_20 | STD004 |
| SUB001_SUB002_SUB003 | 11_20_30 | STD005 |
-------------------------------------------------
或者
--------------------------------------------------------
| subject_id_str | marks_str | student_id_str |
--------------------------------------------------------
| SUB001_SUB002 | 10_20 | STD001_STD002 |
| SUB001_SUB002 | 11_20 | STD003_STD004 |
| SUB001_SUB002_SUB003 | 11_20_30 | STD005 |
--------------------------------------------------------
更多信息:使用 MySQL 5.7
您可以使用字符串聚合:
select
group_concat(subject_id order by subject_id separator '_') as subject_id_str,
group_concat(marks order by subject_id separator '_') as marks_str,
student_id
from mytable
group by student_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.