mysql - 查明是否有每日插入mysql表

标签 mysql sql

我有这张表,应该每天获取有关车辆里程读数的输入。

CREATE TABLE `table_vehicle_info` (
  `id` int(11) NOT NULL ,
  `reg_no` varchar(50) NOT NULL,
  `vehicle_type` int(11) NOT NULL,
  `engine_no` varchar(50) NOT NULL DEFAULT "DDDD",
  `chassis_no` varchar(50) ,
  `model` int(11) DEFAULT NULL,
  `picture` varchar(50) ,
  `rent` double ,
  `eng_power` int(11) DEFAULT NULL,
  `color` varchar(12) DEFAULT NULL,
  `rent_status` varchar(50) DEFAULT NULL,
  `reg_city` varchar(50) DEFAULT NULL,
  `location` varchar(50) DEFAULT NULL,
  `sub_type` varchar(50)  DEFAULT NULL,
  `purchase_date` date DEFAULT NULL,
  `purchase_amount` double DEFAULT NULL,
  `sum_insured` double DEFAULT NULL,
  `token_tax_amount` double DEFAULT NULL,
  `token_period_from` date DEFAULT NULL,
  `reg_placed_at` varchar(50) DEFAULT NULL,
  `funded_by` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=99 DEFAULT CHARSET=latin1;

CREATE TABLE `tbl_readings` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `vehicle_id` int(11) NOT NULL,
  `km_driven` int(11) NOT NULL,
  `dt_of_reading` datetime NOT NULL,
  `dt_of_entry` datetime NOT NULL,
  `entry_user` varchar(50) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `vehicle_id` (`vehicle_id`),
  CONSTRAINT `tbl_readings_ibfk_1` FOREIGN KEY (`vehicle_id`) REFERENCES `table_vehicle_info` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=latin1;

INSERT INTO table_vehicle_info (id,reg_no,vehicle_type ) 
VALUES (1, "B-5484",    12  );

INSERT INTO tbl_readings VALUES (NULL,1,100,'2015-6-1',NOW(), 'user');

我想生成一份报告,显示哪些车辆读数未每天输入。

最佳答案

您可以尝试以下查询,它会返回 tbl_readings 中没有次日条目的所有vehicle_id。

SELECT vehicle_id 
FROM `tbl_readings` 
WHERE DATE(DATE_ADD(dt_of_entry,INTERVAL 1 DAY)) NOT IN 
    (SELECT DATE(dt_of_entry) FROM `tbl_readings`)

编辑

试试这个,

SELECT t1.vehicle_id 
FROM `tbl_readings` t1
LEFT JOIN (SELECT vehicle_id, 
        DATE(DATE_ADD(dt_of_reading,INTERVAL -1 DAY)) as reading_date 
    FROM `tbl_readings`) t2 
ON t1.vehicle_id = t2.vehicle_id AND t1.dt_of_reading = t2.reading_date
WHERE t2.vehicle_id IS NULL
GROUP BY t1.vehicle_id
HAVING COUNT(t1.vehicle_id) > 1;

检查fiddle

关于mysql - 查明是否有每日插入mysql表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30588614/

相关文章:

mysql - 用户角色/权限的架构

mysql - memcached数据会在内存中停留多久

c# - 检索以前的记录并存储到文本框

mysql - 正确锁定以实现可靠插入 (MySQL)

php - 单例 PDO 模型 - 层次结构

MySQL : Select the rows having the max value for one field and keep correct values for joining tables

mysql - 在mysql中查找同一列的两个连续行之间的差异

mysql - 如何通过单个查询 "all, except in list"实现?

c++ - Linux下c++与mysql的连接

PHP使用foreach循环一组结果