sql >> Database >  >> RDS >> Mysql

Ouder / Kind in dezelfde tabel

Er is geen betekenis van het eerste kind in de database, u kunt het eerste kind krijgen door het mininum van de id of het minimum van de waarde, maar de waarden worden niet met een specifieke volgorde in de tabel opgeslagen, dus u kunt niet zien welke waarde de eerste is.

Maar, ervan uitgaande dat de id is een automatische incrementele kolom, dan is de waarde van het eerste kind de waarde van de minimale id , dan kun je dit doen:

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;

Bekijk het hier in actie:

Dit geeft je:

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

Of: Je kunt het krijgen met de minimumwaarde:

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;

Zie het in actie:

Dit geeft je:

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



  1. tsql retourneert een tabel van een functie of winkelprocedure

  2. Postgres SELECTEER waar de WHERE UUID of string is

  3. Openshift en net-ssh incompatibiliteit? (2.9.3-beta1 versus 2.9.2)

  4. Hoe de datum van gisteren in SQLite te krijgen