Это кажется такой простой проблемой, но я не могу найти подходящее решение. Я пытаюсь выбрать информацию из слегка неверно отформатированной таблицы. В принципе, где бы ни находились sequence=0
, person_id
действительно должен быть company_id
. Этот company_id
затем применяется ко всем строкам, которые имеют одинаковые group_id
.Выделение определенных значений из группы в MySQL
Кто-то подумал, что это хорошая идея, чтобы форматировать вещи таким образом, вместо того, чтобы просто иметь столбец company_id
, но он очень затрудняет выбор компании. Это сделало бы мое программирование намного проще просто добавить этот дополнительный столбец и исправить форматирование.
Я хочу, чтобы включить что-то вроде этого:
+----------+------------+-----------+----------+
| group_id | date | person_id | sequence |
+----------+------------+-----------+----------+
| 1 | 2012-08-31 | 10 | 0 |
| 1 | 2012-08-31 | 11 | 1 |
| 1 | 2012-08-31 | 12 | 2 |
| 2 | 1999-04-16 | 10 | 0 |
| 2 | 1999-04-16 | 21 | 1 |
| 2 | 1999-04-16 | 22 | 2 |
| 2 | 1999-04-16 | 23 | 3 |
| 2 | 1999-04-16 | 24 | 4 |
| 3 | 2001-01-09 | 30 | 0 |
| 3 | 2001-01-09 | 31 | 1 |
| 3 | 2001-01-09 | 11 | 2 |
| 3 | 2001-01-09 | 12 | 3 |
+----------+------------+-----------+----------+
В это:
+------------+----------+------------+-----------+----------+
| company_id | group_id | date | person_id | sequence |
+------------+----------+------------+-----------+----------+
| 10 | 1 | 2012-08-31 | 11 | 1 |
| 10 | 1 | 2012-08-31 | 12 | 2 |
| 10 | 2 | 1999-04-16 | 21 | 1 |
| 10 | 2 | 1999-04-16 | 22 | 2 |
| 10 | 2 | 1999-04-16 | 23 | 3 |
| 10 | 2 | 1999-04-16 | 24 | 4 |
| 30 | 3 | 2001-01-09 | 31 | 1 |
| 30 | 3 | 2001-01-09 | 11 | 2 |
| 30 | 3 | 2001-01-09 | 12 | 3 |
+------------+----------+------------+-----------+----------+
Единственный способ, которым я могу думать о том, как добиться этого с вложенными SELECT, заявления, которые являются очень неэффективными учитывая, что у меня около 100 М строк. Хотя это одно время, но я не против, давая ему работать на ночь.
Спасибо, она работала отлично. – Rachie