Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Eltern/Kind in derselben Tabelle

Das erste Kind in der Datenbank hat keine Bedeutung, Sie können das erste Kind durch das Minimum der id erhalten oder das Minimum des Werts, aber die Werte werden nicht in einer bestimmten Reihenfolge in der Tabelle gespeichert, sodass Sie nicht erkennen können, welcher Wert der erste ist.

Aber unter der Annahme, dass die id eine automatisch inkrementelle Spalte ist, dann ist der Wert des ersten untergeordneten Elements der Wert der minimalen id , dann können Sie Folgendes tun:

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;

Sehen Sie es hier in Aktion:

Das ergibt:

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

Oder: Sie können es durch den Mindestwert erhalten:

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;

Sehen Sie es in Aktion:

Das ergibt:

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