Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Pai/Filho na mesma tabela


Não há significado do primeiro filho no banco de dados, você pode obter o primeiro filho pelo mínimo do id ou o mínimo do valor, mas os valores não são armazenados com uma ordem específica na tabela, então você não pode dizer qual valor é o primeiro.

Mas, supondo que o id é coluna auto incremental, então o valor do primeiro filho é o valor do mínimo id , então você pode fazer isso:
SELECT
  t1.parent,
  t2.name,
  t1.value
FROM tablename AS t1
INNER JOIN
(
  SELECT MIN(id) AS id, parent
  FROM tablename
  GROUP BY parent
) AS t22 ON t22.id = t1.id AND t1.parent = t22.parent
INNER JOIN tablename AS t2 ON t1.parent = t2.id;

Veja em ação aqui:

Isso lhe dará:
| PARENT | NAME | VALUE |
-------------------------
|      1 |  aaa |   111 |
|      3 |  ccc |   333 |

Ou: Você pode obtê-lo pelo valor mínimo:
SELECT
  t1.parent,
  t2.name,
  MIN(t1.value) AS value
FROM tablename AS t1
INNER JOIN tablename AS t2 ON t1.parent = t2.id
GROUP BY t1.parent, t2.name;

Veja em ação:

Isso lhe dará:
| PARENT | NAME | VALUE |
-------------------------
|      1 |  aaa |   111 |
|      3 |  ccc |   333 |