Mysql
 sql >> Database >  >> RDS >> Mysql

Genitore/figlio nella stessa tabella

Non c'è alcun significato del primo figlio nel database, puoi ottenere il primo figlio con il minimo dell'id o il minimo del valore, ma i valori non sono memorizzati con un ordine specifico nella tabella, quindi non puoi dire quale valore è il primo.

Ma, supponendo che l'id è una colonna auto incrementale, quindi il valore del primo figlio è il valore dell'id minimo , allora puoi farlo:

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;

Guardalo in azione qui:

Questo ti darà:

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

Oppure: Puoi ottenerlo dal valore minimo:

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;

Guardalo in azione:

Questo ti darà:

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