簡體   English   中英

SQL:檢測多個相同的條目作為批處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM