sql >> Databasteknik >  >> RDS >> Mysql

Förälder/barn i samma bord

Det finns ingen mening med det första barnet i databasen, du kan få det första barnet med minimivärdet för id eller minimum av värdet, men värdena lagras inte med en specifik ordning i tabellen, så du kan inte se vilket värde som är det första.

Men förutsatt att id är automatisk inkrementell kolumn, då är värdet på det första barnet värdet på det minsta id , då kan du göra så här:

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 här:

Detta ger dig:

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

Eller: Du kan få det med minimivärdet:

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:

Detta ger dig:

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



  1. Få lista över databaser från SQL Server

  2. Hur får jag ett Oracle SCHEMA som DDL-skript med DBMS_METADATA (och SCHEMA_EXPORT)

  3. Hur tar man bort accenter och alla tecken <> a..z i sql-server?

  4. mysql_insert_id problem vid samtidig infogning av data