MySQL: объединение строк - PullRequest
2 голосов
/ 10 марта 2019

Может быть, это действительно простой вопрос, заранее спасибо.

Что у меня сейчас есть:

+-----+---+---+---+---+
| sid | a | b | c | d |
+-----+---+---+---+---+
| 123 |   |   |   | 4 |
| 123 |   | 2 |   |   |
| 123 |   |   | 3 |   |
| 123 | 1 |   |   |   |
| 456 |   | 5 |   |   |
| 456 |   |   | 6 |   |
| 789 |   |   |   | 8 |
| 789 | 7 |   |   |   |
+-----+---+---+---+---+

Что я пытаюсь получить:

+-----+------+------+------+------+
| sid |  a   |  b   |  c   |  d   |
+-----+------+------+------+------+
| 123 | 1    | 2    | 3    | 4    |
| 456 |      | 5    | 6    |      |
| 789 | 7    |      |      | 8    |
+-----+------+------+------+------+

Как такое "объединение строк" может быть сделано в MySQL?

1 Ответ

2 голосов
/ 10 марта 2019

Вы можете сделать это с помощью функции агрегирования MAX() с предложением GROUP BY в вашем запросе.

SELECT sid, MAX(a), MAX(b), MAX(c), MAX(d)
FROM table
GROUP BY sid

Я использовал MAX(), потому что он будет фильтровать значения NULL с другими значениями.

Более подробное объяснение здесь: Документация MySQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...