Mysql
 sql >> Base de données >  >> RDS >> Mysql

Parent / Enfant dans la même table

Il n'y a aucune signification du premier enfant dans la base de données, vous pouvez obtenir le premier enfant par le minimum de l'id ou le minimum de la valeur, mais les valeurs ne sont pas stockées dans un ordre spécifique dans la table, vous ne pouvez donc pas dire quelle valeur est la première.

Mais, en supposant que le id est une colonne auto-incrémentielle, alors la valeur du premier enfant est la valeur du minimum id , alors vous pouvez faire ceci :

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;

Voyez-le en action ici :

Cela vous donnera :

| PARENT | NAME | VALUE |
-------------------------
|      1 |  aaa |   111 |
|      3 |  ccc |   333 |

Ou : Vous pouvez l'obtenir par la valeur minimale :

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;

Voyez-le en action :

Cela vous donnera :

| PARENT | NAME | VALUE |
-------------------------
|      1 |  aaa |   111 |
|      3 |  ccc |   333 |