Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mencoba mengembalikan semua kolom catatan anak untuk catatan induk

Anda dapat menggunakan CSV hasil id seperti:

SELECT *
FROM tblreport
WHERE FIND_IN_SET(ID,(SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (
                     SELECT @pv:=(SELECT GROUP_CONCAT(ID SEPARATOR ',') 
                     FROM tblreport WHERE ParentID IN (@pv)) AS lv FROM tblreport
                     JOIN (SELECT @pv:=1)tmp
                       WHERE ParentID IN (@pv)) a));

Demo DBFiddle

Keluaran:

ID  Name    ParentID
2   2nd     1
3   3rd     1
4   4th     2

EDIT:

Jika Anda juga membutuhkan baris asli, Anda dapat menggunakan UNION ALL :

SET @var = 1;

SELECT *
FROM tblreport
WHERE FIND_IN_SET(ID,(SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (
                     SELECT @pv:=(SELECT GROUP_CONCAT(ID SEPARATOR ',') 
                     FROM tblreport WHERE ParentID IN (@pv)) AS lv FROM tblreport
                     JOIN (SELECT @pv:[email protected])tmp
                       WHERE ParentID IN (@pv)) a))

UNION ALL
SELECT *
FROM tblReport
WHERE ID = @var
ORDER BY ID;

DBFiddle Demo2



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL dinamis dengan variabel lokal

  2. MySQL:Anda tidak dapat menentukan tabel target untuk pembaruan dalam klausa FROM

  3. Mengoptimalkan ORDER BY

  4. Spring Boot:Jdbc javax.net.ssl.SSLException:menutup masuk sebelum menerima close_notify rekan

  5. JDBC Hapus &Sisipkan menggunakan batch