sql >> Base de Datos >  >> RDS >> Mysql

Padre/hijo en la misma tabla

No hay significado del primer hijo en la base de datos, puede obtener el primer hijo por el mínimo de id o el mínimo del valor, pero los valores no se almacenan con un orden específico en la tabla, por lo que no puede saber qué valor es el primero.

Pero, asumiendo que el id es una columna incremental automática, entonces el valor del primer hijo es el valor del id mínimo , entonces puedes hacer esto:

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;

Véalo en acción aquí:

Esto te dará:

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

O: Puede obtenerlo por el 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;

Véalo en acción:

Esto le dará:

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