mysql 数据表中有字段 id,project_name,create_time,需要按照创建时间create_time统计每天的数据,而且每天只统计当天最后创建的一条数据,请问sql查询语句怎么写?
时间: 2024-04-10 07:34:31 浏览: 17
你可以使用以下 SQL 查询语句来实现你的需求:
```sql
SELECT DATE(create_time) AS date, MAX(id) AS max_id, project_name
FROM your_table_name
GROUP BY DATE(create_time)
```
这个查询语句将会按照 create_time 字段中的日期进行分组,并且在每个分组中选择具有最大 id 值的记录。结果中包括日期(作为 "date" 列)、最大 id 值(作为 "max_id" 列)和对应的项目名称(作为 "project_name" 列)。请将 "your_table_name" 替换为你的实际数据表名。
相关问题
MySQL同时创建10个表代码
好的,下面是一个同时创建10个表的示例代码:
```sql
CREATE TABLE departments (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE employees (
id INT(11) NOT NULL AUTO_INCREMENT,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
phone VARCHAR(20) NOT NULL,
hire_date DATE NOT NULL,
job_title VARCHAR(50) NOT NULL,
salary DECIMAL(10,2) NOT NULL,
department_id INT(11) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (department_id) REFERENCES departments(id)
);
CREATE TABLE projects (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
budget DECIMAL(10,2) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE tasks (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
due_date DATE NOT NULL,
status VARCHAR(20) NOT NULL,
project_id INT(11) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (project_id) REFERENCES projects(id)
);
CREATE TABLE students (
id INT(11) NOT NULL AUTO_INCREMENT,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
phone VARCHAR(20) NOT NULL,
birth_date DATE NOT NULL,
address VARCHAR(100) NOT NULL,
major VARCHAR(50) NOT NULL,
gpa DECIMAL(3,2) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE courses (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
description VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE enrollments (
id INT(11) NOT NULL AUTO_INCREMENT,
student_id INT(11) NOT NULL,
course_id INT(11) NOT NULL,
grade VARCHAR(2) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (student_id) REFERENCES students(id),
FOREIGN KEY (course_id) REFERENCES courses(id)
);
CREATE TABLE orders (
id INT(11) NOT NULL AUTO_INCREMENT,
customer_name VARCHAR(50) NOT NULL,
order_date DATE NOT NULL,
total DECIMAL(10,2) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE order_items (
id INT(11) NOT NULL AUTO_INCREMENT,
product_name VARCHAR(50) NOT NULL,
quantity INT(11) NOT NULL,
price DECIMAL(10,2) NOT NULL,
order_id INT(11) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (order_id) REFERENCES orders(id)
);
CREATE TABLE books (
id INT(11) NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
author VARCHAR(50) NOT NULL,
publisher VARCHAR(50) NOT NULL,
publish_date DATE NOT NULL,
genre VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
```
以上是一个简单的示例,你可以根据自己的需求修改字段名称和数据类型来创建更多的表。同时,你还需要考虑表之间的关系,以便在需要时进行查询。
已知mysql的表结构为CREATE TABLE dtx_verify_rule_type ( id varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键id', business_id varchar(40) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '业务id', type_name varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '规则类型名称', product_class_codes json DEFAULT NULL COMMENT '可生产对象类', version varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '版本号', oid varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '原始记录ID', ack_state tinyint(1) DEFAULT '0' COMMENT '确认状态:0-未确认(默认)、1-已确认', ack_by varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '确认人', operate tinyint(1) DEFAULT '-1' COMMENT '操作方式:-1-未变化(默认)、0-删除、1-新增、2-修改', creator varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', creation_time char(14) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建时间', modifier varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '最后修改人', modified_time char(14) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '最后修改时间', valid tinyint NOT NULL DEFAULT '1' COMMENT '合法标识', ts timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '乐观锁', PRIMARY KEY (id) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='数据校验类型表,因采用mybatis-plus.暂不分表表示类型与交付阶段的关系';,product_class_codes 字段存储数据格式为:["project", "building", "floor", "partition", "shaft", "space", "system", "equipment"] ,怎么根据product_class_codes 查询"equipment"的数据,mysql的in实现
可以使用MySQL的IN语句来查询包含"equipment"的记录,具体的查询语句如下:
```
SELECT * FROM dtx_verify_rule_type WHERE 'equipment' IN (SELECT JSON_UNQUOTE(JSON_EXTRACT(product_class_codes, '$[7]')));
```
这条语句会查询包含"equipment"的所有记录。其中,JSON_EXTRACT函数用于从JSON数组中获取指定索引位置的元素,JSON_UNQUOTE函数用于去掉元素值中的双引号,使其与字符串类型匹配。在这里,我们使用了IN语句来判断是否包含"equipment",注意需要将其包装在子查询中。