sql >> Database >  >> RDS >> Mysql

Haal N aantal records uit de onderliggende tabel voor elke bovenliggende record in een MySQL-weergave

Als u een VIEW moet maken, kunt u zoiets als dit gebruiken:

CREATE VIEW First_Four AS
SELECT c1.*
FROM
  Child_Table c1 LEFT JOIN Child_Table c2
  ON c1.ParentID = c2.ParentID
     AND (STR_TO_DATE(c1.`date`, '%m/%Y')>STR_TO_DATE(c2.`date`, '%m/%Y')
          OR (STR_TO_DATE(c1.`date`, '%m/%Y')=STR_TO_DATE(c2.`date`, '%m/%Y')
              AND c1.ID>c2.ID)
         ) 
GROUP BY
  c1.ID, c1.ParentID, c1.`Date`, c1.Data
HAVING
  COUNT(c2.ID)<4

Ik beschouw de veldgegevens als een VARCHAR-kolom, dus we moeten STR_TO_DATE gebruiken, als dat niet het geval is, kunnen we c1.date vergelijken met c2.date rechtstreeks.

Zie fiddle hier .



  1. een postgre-tool voorstellen om het verschil tussen het schema en de gegevens te vinden

  2. PHP MySQL Google Chart JSON - Compleet voorbeeld

  3. MySQL - Efficiënt combineren van twee select-statements in één resultaat met LIMIT

  4. Hoe werkt memcache met MySQL?