====== Простые и гениальные идеи ====== Поиск участников между 2мя датами по вводному date_from и date_to, оригинальная идея от автора промышленных решений в сфере SQL. WHERE 1 AND date_from <= :date_to AND date_to >= :date_from Простенький Insert or Update очень интересный пример как можно передать значения с Insert'а INSERT INTO menu_sub (id, name, desc, misc) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE name=VALUES(name), desc=VALUES(desc), misc=VALUES(misc) Немного фишечек от MariaDB -- Insert без Into INSERT `table` (`field`) VALUES ("value"); -- join по одноименному столбцу SELECT u.*, g.name FROM `users` `u` LEFT JOIN `groups` `g` USING `user_id` AutoIncrement ручками, скорее всего не супер точный но рабочий точно. INSERT INTO test1 (`test1`, `test2`) (SELECT ROUND(mr.test1 + 0.2, 2) as A, ROUND(mr.test1 + 0.3, 2) as B FROM test1 mr LEFT JOIN (SELECT MAX(test1.test1) AS valmax FROM test1) AS valmaxTable ON mr.test1 = valmaxTable.valmax WHERE mr.test1 = valmaxTable.valmax); -- PK test1 test2 -- 1 0,1 0,2 -- 2 0,3 0,4 --- 3 0,5 0,6 Начало/конец Дня, Недели, Месяца SELECT CAST(CURDATE() AS datetime) as `DayBegin`, DATE_SUB(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 SECOND) AS `DayEnd`, DATE_ADD(CURDATE(), INTERVAL(-WEEKDAY(CURDATE())) DAY) AS `BeginOfWeek`, DATE(NOW() + INTERVAL (6 - WEEKDAY(NOW())) DAY) AS `EndOfWeek`, CAST(DATE_FORMAT(CURDATE() ,'%Y-%m-01') AS DATETIME) AS `BeginOfMonth`, DATE_SUB(DATE_ADD(CAST(DATE_FORMAT(CURDATE() ,'%Y-%m-01') AS date), INTERVAL 1 MONTH), INTERVAL 1 SECOND) AS `EndOfMonth`