sql >> Databasteknik >  >> RDS >> Mysql

MySQL överlappande tidsperioder baserat på kriterier

Om jag förstår ditt problem rätt behöver du en vänsteranslutning istället för inre sammanfogning -

SELECT a.id, GROUP_CONCAT(b.id) AS abcd
FROM new_table a
LEFT JOIN new_table b ON a.id <> b.id
                      AND a.Block_ID = b.Block_ID
                      AND a.Block_Type = b.Block_Type
                      AND a.Valid = b.Valid
                      AND ((a.Valid_To BETWEEN b.Valid_From AND b.Valid_To)
                            OR (a.Valid_From BETWEEN b.Valid_From AND b.Valid_To)
                            OR (a.Valid_To = b.Valid_From)
                            OR (a.Valid_From = b.Valid_To)
                          )
GROUP BY a.id;



  1. JSON_VALUE() Exempel i SQL Server (T-SQL)

  2. MySQLi count(*) returnerar alltid 1

  3. Cachning av PDO-förberedda uttalanden

  4. Filtrera null eller tom indata med LOAD DATA INFILE i MySQL