Слияние разных результатов SQL - PullRequest
1 голос
/ 18 февраля 2020

Итак, моя проблема заключается в следующем: у меня есть база данных MariaDB, которую я пытаюсь запросить. Я смотрю на данные эксперимента. Я хотел бы объединить несколько экспериментов в одну строку результатов запроса SQL.

Вот как выглядят данные:

Experiment_ID | Antibiotic | Strain | Medium    | ...
1               Ampicillin   E. coli  TBauto      ...
2               Ampicillin   E. coli  TB + IPTG

Что я хотел бы получить :

Experiment_ID | Antibiotic | Strain | Medium               | ...
1               Ampicillin   E. coli  TBauto, TB + IPTG      ...

Мне плевать на Experiment_ID, он просто для того, чтобы прояснить, что я говорю о двух разных записях.

Я уже пробовал

Select
    tmp.*
From
    ((Select * from my_tbl Where ExperimentID = 1)
Union
    (Select * from my_tbl Where ExperimentID = 2)) as tmp

Там я до сих пор получаю 2 ряда результатов. Я мог бы также сделать это в своем Python коде. Но мне бы не хотелось изменять результаты, которые я получаю из БД.

Наверное, я просто искал не то слово, чтобы объединить эти две записи. Поэтому, пожалуйста, направьте меня в правильном направлении.

1 Ответ

1 голос
/ 18 февраля 2020

Вы, кажется, хотите агрегацию:

select min(Experiment_ID) as Experiment_ID, Antibiotic, Strain,
       group_concat(Medium order by Experiment_ID separator ', ')
from t
where Experiment_ID in (1, 2)
group by Antibiotic, Strain;
...