一、说明
这篇博客用于记录工作中用到的一些SQL,如果对你有帮助,帮忙点个赞可好。。。
二、查询相关
1、查询某张表的所有字段名
select * from information_schema.columns where table_name='t_user' ;
2、查询2小时内的数据
-- 方法一
SELECT * FROM 表名 WHERE 字段名>NOW()-INTERVAL 2 HOUR;
-- 方法二
SELECT * FROM 表名 WHERE 字段名 > DATE_SUB(NOW(), INTERVAL 60 MINUTE);
3、查询一天内的数据
-- 方法一
select * from table where to_days(column_time) = to_days(now());
-- 方法二
select * from table where date(column_time) = curdate();
4、查询7天内的数据
select * from table where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(column_time);
5、查询1隔越内的数据
select * from table where DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(column_time);
6、统计某张表的数据
SELECT
date_format( rd.createtime, '%Y%m' ),
SUM( card_cost ) / 100,
SUM( flow_cost ) / 100,
COUNT( * )
FROM
pur_recorddetail rd
INNER JOIN iot_card c ON c.iccid = rd.iccid
WHERE
1 = 1
AND c.type = 1
GROUP BY
date_format( rd.createtime, '%Y%m' )
7、查询某张表的字段名及注释,用于生成word文档
SELECT
COLUMN_NAME 代码,
COLUMN_COMMENT 名称,
COLUMN_TYPE 数据类型,
IS_NULLABLE as 是否可以为空,
COLUMN_DEFAULT as 默认值,
COLUMN_COMMENT 注释
FROM
INFORMATION_SCHEMA.COLUMNS
where
-- wx 为数据库名称,到时候只需要修改成你要导出表结构的数据库即可
table_schema ='wx'
AND
-- t_article为表名,到时候换成你要导出的表的名称
-- 如果不写的话,默认会查询出所有表中的数据,这样可能就分不清到底哪些字段是哪张表中的了,所以还是建议写上要导出的名名称
table_name = 't_article'
三、插入相关
1、把a_copy表的数据插入到a表中,这种情况针对自增id的,由于自增id,insert的时候不需要id这个字段
insert into t_user ( name, password, old, updatetime )
select
name,
password,
old,
updatetime
from
t_user_copy
2、在插入语句中使用条件判断,用于解决高并发,满足指定的条件才能插入数据,在DAO层次判断
·INSERT INTO t_order ( user_id, entrust_order_id, currency_id, order_type, order_no, price, total_price, total_count, pay_type, pay_name, pay_code, reference_code ) SELECT ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? FROM DUAL WHERE EXISTS ( SELECT aa.totalOrderCount, bb.entrustCount FROM ( SELECT count( entrust_order_id ) AS totalOrderCount FROM t_order WHERE entrust_order_id = ? AND entrust_order_id != 0 AND order_status = '待付款' AND seller_confirm = '待确认' AND is_active = 0 ) AS aa, (select count(id) as entrustCount from t_entrust_order where id = ? and surplus_count >= ? and order_status in ('发布中','交易中')) as bb WHERE aa.totalOrderCount < 3 AND bb.entrustCount > 0 )