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

Forælder/barn i samme bord

Der er ingen betydning af det første barn i databasen, du kan få det første barn ved at få et minimum af id eller minimum af værdien, men værdierne er ikke gemt med en bestemt rækkefølge i tabellen, så du kan ikke se, hvilken værdi der er den første.

Men forudsat at id er automatisk inkrementel kolonne, så er værdien af ​​det første barn værdien af ​​det mindste id , så kan du gøre dette:

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;

Se den i aktion her:

Dette vil give dig:

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

Eller: Du kan få det ved minimumsværdien:

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;
 

Se det i aktion:

Dette vil give dig:

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


  1. SYSDATETIMEOFFSET() Eksempler i SQL Server (T-SQL)

  2. MySQL-kompatibilitet med MacOS Sierra

  3. pdo lastInsertId returnerer nul(0)

  4. Sammenføjning af to fungerende sql-forespørgsler får forkerte resultater - Hvor går jeg galt