Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cố gắng trả về tất cả các cột của bản ghi con cho một bản ghi mẹ

Bạn có thể sử dụng CSV id kết quả như:

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));

Bản trình diễn DBFiddle

Đầu ra:

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

CHỈNH SỬA:

Nếu bạn cũng cần hàng gốc, bạn có thể sử dụng 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. Lỗi JDBC:Trước khi bắt đầu tập kết quả

  2. Tên cột và bảng có phân biệt chữ hoa chữ thường trong MySQL không?

  3. Gọi PDO từ một hàm

  4. Nhận số lượng hàng chèn / cập nhật từ TRÊN CẬP NHẬT KHÓA DUPLICATE

  5. MySQL Chọn truy vấn để tìm nạp cơ sở bản ghi trên các giá trị danh sách